エラーメッセージが発生すると、ウォッチは停止します。
stream.js:94
throw er; // Unhandled stream error in pipe.
^
source string:51: error: invalid property name
ウォッチを実行し続け、エラーの場所を特定する方法。
うなり声はエラーに対処でき、停止する必要はありません。
styleSheet.scss:41: error: invalid property name
そうしないと、エラーが発生したときにコマンドラインで「gulp」と入力し続ける必要があります。
この回答は、Gulpへの最近の変更を反映するために追加されました。 OPの質問に関連するため、元の回答を保持しました。 Gulp 2.xを使用している場合は、2番目のセクションにスキップします
_errLogToConsole: true
_をオプションとしてsass()
メソッドに渡すことにより、このデフォルトの動作を変更できます。
あなたのタスクは今、このように見えるかもしれません:
_gulp.task('sass', function () {
gulp.src('./*.scss')
.pipe(sass())
.pipe(gulp.dest('./'));
});
_
.pipe(sass())
行を変更して、_errLogToConsole: true
_オプションを含めます。
_.pipe(sass({errLogToConsole: true}))
_
これは、エラーロギングを使用したタスクの外観です。
_gulp.task('sass', function () {
gulp.src('./*.scss')
.pipe(sass({errLogToConsole: true}))
.pipe(gulp.dest('./'));
});
_
エラー出力は、次のようにインラインになります。
_[gulp] [gulp-sass] source string:1: error: invalid top-level expression
_
Nmpjs.orgで _gulp-sass
_オプションと設定 の詳細を読むことができます。
Gulp 2.xでは、errLogToConsole
は使用できなくなりました。幸いなことに、_gulp-sass
_にはエラーを処理するメソッドがあります。 on('error', sass.logError)
を使用します。
_gulp.task('sass', function () {
gulp.src('./sass/**/*.scss')
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('./css'));
});
_
よりきめ細かな制御が必要な場合は、コールバック関数を自由に提供してください。
_gulp.task('sass', function () {
gulp.src('./sass/**/*.scss')
.pipe(sass()
.on('error', function (err) {
sass.logError(err);
this.emit('end');
})
)
.pipe(gulp.dest('./css'));
});
_
これは、プロセス制御に関する詳細情報が必要な場合に読むのに適したスレッドです。 https://github.com/gulpjs/gulp/issues/259#issuecomment-55098512
実際、上記のanwsersは機能しません(gulp-sass 3.XXを使用しています)。実際に機能したもの:
gulp.task('sass', function () {
return gulp.src(config.scssPath + '/styles.scss')
.pipe(sourcemaps.init())
.pipe(sass({ outputStyle: 'compressed' })
.on('error', sass.logError)
)
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest(config.cssPath))
});
Gulp-sass 3.x.xで「sass.logError(err);」を使用していたとき「this.emit( 'end');は関数ではない」というエラーを常に受け取ります。今私が使用しているとき:
.pipe(sass({ outputStyle: 'compressed' })
.on('error', sass.logError)
)
すべてが魅力のように機能している
Gulp "^ 2.0.0"では、オプションerrLogToConsole
は機能しなくなります。代わりに、_gulp-sass
_には、内部で_gulp-util
_を使用する組み込みのエラーログコールバックがあります。また、gulpにはエラー時にプロセスを強制終了する問題があるため、watch
を使用している場合はthis.emit('end')
を呼び出す必要があります https://github.com/gulpjs/gulp/issues/259#issuecomment-55098512
_var sass = require('gulp-sass');
//dev
sass(config.sassDev)
.on('error', function(err) {
sass.logError(err);
this.emit('end'); //continue the process in dev
})
)
//prod
sass(config.sassProd).on('error', sass.logError)
_
A Gulp 3ユーザーの場合:
Gulp 2.xに関しては、上記の@dtotheftpソリューションが気に入りました。興味深いことに、少なくとも@ 3.9.1の下では、Gulp3以降では機能しません。
_.on('error', function(err){
sass.logError(err);
this.emit('end'); //continue the process in dev
})
_
私を取得します
_TypeError: this.emit is not a function
at Function.logError (/depot/myproject/node_modules/gulp-sass/index.js:181:8)
_
苦情はgulpfileのthis.emit()
からではなく、sass node-moduleから、つまり前の行から来ていることに注意してください。
これは私のために働く:
_.on('error', function(err){
gutil.log(err);
this.emit('end');
})
_
私はすべてのエラーを取得します²、時計は決して終わりません;)(plumber()
の直後にgulp.src()
も使用しています。
(はい、sass.logErrorは gutil ...に基づいていると言われているため、修正は非常に非論理的かもしれません。)
—
²何らかの理由でセットアップ前にサイレントになった未定義のマクロでも。