解決方法1:オプション指定、プラグイン不要
※追記(2015/07/20 8:00)
春先くらいからこれまで記載していた方法だと、最新版を利用した際にエラーでとまってしまうようになっていました。バージョン2系になってからは errLogToConsole
オプションが使えなくなったためです。かわりに node-sass に合わせて gulp-sass にも変更がはいった形式になったのでその方法も追記しておきます。
gulp-sass v1.x まで
gulp-sass のオプションで errLogToConsole
を指定しておくことで、処理を止めずにしておけます。
gulp-sass v1.x までの方法
var gulp = require('gulp');
var sass = require('gulp-sass');
gulp.task('sass', function () {
gulp.src('_src/**/*.scss')
.pipe(sass({errLogToConsole: true}))
.pipe(gulp.dest('html/css'));
});
gulp-sass v2.x 以降
gulp-sass で利用している node-sass で、エラーがCallbackされるようになったようで、それを拾って表示する形式に変わっています。
gulp-sass v2.x からの方法
var gulp = require('gulp');
var sass = require('gulp-sass');
gulp.task('sass', function () {
gulp.src('_src/**/*.scss')
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('html/css'));
});
これで Sass のエラーが起きても処理が止まらなくなります。
解決方法2:プラグインの利用
Sass の記述エラーがあっても、処理を止めない方法ですが、他にも同じ状況の人いないかなーと検索してみると、西畑さんのエントリーで gulp-plumber を使う方法が書いてありました。
Sassなどのエラー時にgulpタスクを終了させない為の「gulp-plumber」 - to-R
Sass のエラーにかぎらずに、 gulp の .pipe()
でエラーになるととまってしまう問題は他でも起きるようで、そのパッチとしてのプラグインのようです。
Monkey patching 'pipe' method from gulp.src · Issue #91 · gulpjs/gulp
他の処理でもエラーが起きてしまいそうな場合は、こっちのプラグインを利用するのが良さそうですね。