gulp-sass で sourcemap を使う
gulp-sourcemaps を使って、マップファイルを外部出力して、css を minify するところまで 3 ステップでやってみます。
前提とするディレクトリ構成とパッケージはこんな感じです。
├── gulpfile.js
├── package.json
├── dist
│ └── css
│ └── main.css
└── src
└── scss
├── _module.scss
└── main.scss
{
"devDependencies": {
"gulp": "^3.9.0",
"gulp-minify-css": "^1.2.0",
"gulp-sass": "^2.0.4",
"gulp-sourcemaps": "^1.5.2"
}
}
※gulp-sass の 2.0.3 以前のバージョンでは、windows 環境でのソースマップの出力に不具合があるようなので、windows 環境でうまくいかない場合はバージョンを上げてみましょう。
1. インライン出力
css ファイルにマッピング情報が追記されます。
var gulp = require('gulp');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
/* sass task */
gulp.task('sass', function() {
return gulp.src('src/scss/**/*.scss')
.pipe(sourcemaps.init())
.pipe(sass())
.pipe(sourcemaps.write())
.pipe(gulp.dest('dist/css/'));
});
2. 外部ファイル出力
インライン出力だと css ファイルの容量が増えるのが気になるので、外部ファイルに出力します。
var gulp = require('gulp');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
/* sass task */
gulp.task('sass', function() {
return gulp.src('src/scss/**/*.scss')
.pipe(sourcemaps.init())
.pipe(sass())
.pipe(sourcemaps.write('../maps')) // マップファイルを出力するパスを指定します
.pipe(gulp.dest('dist/css/'));
});
3. css を minify する
css を minify します。
gulp-sass のオプションでoutputStyle: 'compressed'
を指定すればいいような気もしますが、compressed
にするとなぜかソースマップのマッピングがずれてしまうようなので、別途gulp-minify-css
を使用して minify します。
また、gulp-minify-css
でセレクタがマージされた際にもマッピングがずれるようなので、オプションでadvanced:false
を追加しています。
var gulp = require('gulp');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
var minifyCss = require('gulp-minify-css'); // gulp-minify-css を追加
/* sass task */
gulp.task('sass', function() {
return gulp.src('src/scss/**/*.scss')
.pipe(sourcemaps.init())
.pipe(sass({
// outputStyle: 'compressed'
}))
.pipe(minifyCss({advanced:false})) // minify
.pipe(sourcemaps.write('../maps'))
.pipe(gulp.dest('dist/css/'));
});
まとめ
手元の環境ではこれでとりあえずソースマップが使えるようになりました。
ただ、compressed
にするとずれる問題などはどこに原因があるのかわかっていない状態で回避していますので、もっといいやり方などあればぜひコメントで教えてください。
Author And Source
この問題について(gulp-sass で sourcemap を使う), 我々は、より多くの情報をここで見つけました https://qiita.com/kyaido/items/04658c04a7dbe9f05c16著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .