当 gulp-watch 触发的任务失败时,如何捕获异常?
How do I catch exceptions when a task triggered by gulp-watch fails?
我使用下面的 gulp 任务将 less 转换为 css。我启动它一次,并在 less-file 更改后更新 css.
gulp.task('watch-less', function () {
gulp.watch('app/styles/*.less', function (event) {
try {
var filename = event.path;
gulp.src(filename)
.pipe(sourcemaps.init())
.pipe(less())
.pipe(sourcemaps.write())
.pipe(gulp.dest('app/styles/'));
} catch (e) {
console.log(e);
}
});
});
问题:有时,less 会失败并停止并显示类似
的错误消息
events.js:72
throw er; // Unhandled 'error' event
^
Error: Unrecognised input in file
显然我的 try catch 机制是错误的,我认为它保护了管道构建步骤而不是管道-运行 时间。
问:如何编写 gulp-watch 任务,使其在 less 失败时继续工作?
要么配合活动
gulp.src(filename)
.pipe(sourcemaps.init())
.pipe(less())
.on('error', console.log)
.pipe(sourcemaps.write())
.pipe(gulp.dest('app/styles/'));
或使用gulp-plumber
:
var plumber = require('gulp-plumber')
...
gulp.src(filename)
.pipe(sourcemaps.init())
.pipe(plumber())
.pipe(less())
.pipe(sourcemaps.write())
.pipe(gulp.dest('app/styles/'));
我使用下面的 gulp 任务将 less 转换为 css。我启动它一次,并在 less-file 更改后更新 css.
gulp.task('watch-less', function () {
gulp.watch('app/styles/*.less', function (event) {
try {
var filename = event.path;
gulp.src(filename)
.pipe(sourcemaps.init())
.pipe(less())
.pipe(sourcemaps.write())
.pipe(gulp.dest('app/styles/'));
} catch (e) {
console.log(e);
}
});
});
问题:有时,less 会失败并停止并显示类似
的错误消息events.js:72
throw er; // Unhandled 'error' event
^
Error: Unrecognised input in file
显然我的 try catch 机制是错误的,我认为它保护了管道构建步骤而不是管道-运行 时间。
问:如何编写 gulp-watch 任务,使其在 less 失败时继续工作?
要么配合活动
gulp.src(filename)
.pipe(sourcemaps.init())
.pipe(less())
.on('error', console.log)
.pipe(sourcemaps.write())
.pipe(gulp.dest('app/styles/'));
或使用gulp-plumber
:
var plumber = require('gulp-plumber')
...
gulp.src(filename)
.pipe(sourcemaps.init())
.pipe(plumber())
.pipe(less())
.pipe(sourcemaps.write())
.pipe(gulp.dest('app/styles/'));