第5章 現場で使える実践Sassテクニック
5-4 gulpのタスクを追加してもっと便利な環境にする
npm install
glob でパーシャルファイルを一括で読み込む
@import "components/headings"; @import "components/texts"; @import "components/lists"; @import "components/buttons"; @import "components/images";
npm install --save-dev gulp-sass-glob
var gulp = require('gulp');
var sass = require('gulp-sass');
var sassGlob = require('gulp-sass-glob'); //①「gulp-sassglob」を読み込み
gulp.task('sass', function() {
  return gulp.src('./sass/**/*.scss')
    .pipe(sassGlob()) //②「sass」の前に指定
    .pipe(sass({outputStyle: 'expanded'}))
    .pipe(gulp.dest());
});
@import "components/**";
ソースマップでコンパイル前のソースの場所を知る
npm install --save-dev gulp-sourcemaps
var gulp = require('gulp');
var sass = require('gulp-sass');
var sassGlob = require('gulp-sass-glob');
var sourcemaps = require('gulp-sourcemaps'); //①「gulp-sourcemaps」を読み込み
gulp.task('sass', function() {
  return gulp.src('./sass/**/*.scss')
    .pipe(sourcemaps.init()) //②「gulp.src」の直後に指定
    .pipe(sassGlob())
    .pipe(sass({outputStyle: 'expanded'}))
    .pipe(sourcemaps.write()) //③「gulp.dest」の直前に指定
    .pipe(gulp.dest('./css'));
});
ソースマップ書き出し
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2 ...(略)... IifQ== */
mapファイルの書き出し
    .pipe(sourcemaps.write('./css'))
/*# sourceMappingURL=../css/sample.css.map */
エラー時にWatch を停止させずに自動コンパイルを継続させる
npm install --save-dev gulp-plumber
var gulp = require('gulp');
var sass = require('gulp-sass');
var sassGlob = require('gulp-sass-glob');
var sourcemaps = require('gulp-sourcemaps');
var plumber = require('gulp-plumber'); //①「gulpplumber」を読み込み
gulp.task('sass', function() {
  return gulp.src('./sass/**/*.scss')
    .pipe(plumber()) //②「gulp.src」の直下に指定
    .pipe(sourcemaps.init())
    .pipe(sassGlob())
    .pipe(sass({outputStyle: 'expanded'}))
    .pipe(sourcemaps.write())
    .pipe(gulp.dest());
});
エラーに気付きやすくするために通知を出す
npm install --save-dev gulp-notify
var gulp = require('gulp');
var sass = require('gulp-sass');
var sassGlob = require('gulp-sass-glob');
var sourcemaps = require('gulp-sourcemaps');
var plumber = require('gulp-plumber');
var notify = require('gulp-notify'); //①「gulp-notify」を読み込み
gulp.task('sass', function() {
  return gulp.src('./sass/**/*.scss')
    .pipe(plumber({errorHandler: notify.onError("Error: <%= error.message %>")})) //②plumberの引数にエラーメッセージを設定
    .pipe(sourcemaps.init())
    .pipe(sassGlob())
    .pipe(sass({outputStyle: 'expanded'}))
    .pipe(sourcemaps.write())
    .pipe(gulp.dest());
});

