【发布时间】:2016-10-03 02:07:35
【问题描述】:
我正在开发一个带有以下构建步骤的打字稿项目:
- 皮棉
- 构建
- 测试
我使用 Gulp 4.0 作为构建工具,并希望有一个 watch 任务,它应该触发测试(这意味着 lint 和构建任务是先触发的)。目前,当发生错误(例如 lint 错误)时,watch 任务终止。
这个问题众所周知并且很容易解决。典型的解决方案是 a) 防止错误或 b) 修补管道行为。
a) 对于gulp-tslint,我可以使用他们主页上的这个配置:
gulp.task("invalid-noemit", () =>
gulp.src("input.ts")
.pipe(tslint())
.pipe(tslint.report("prose", {
emitError: false
}))
);
但是当我包含 emitError 标志时,会记录 lint 错误并执行所有后续 gulp 任务(构建、测试)。
b) 我也可以使用gulp-plumber 或手动捕获错误(请参阅here),但所有这些已知解决方案的行为都是相同的,执行以下 gulp 任务(构建、测试)。
我想要的是任务链在错误后停止(在 lint 错误后没有构建和测试),但 watch 任务永远不应该停止。我怎么能解决这个问题?观察者任务如下所示:
// watcher
gulp.task('watch', gulp.series('test', function doWatch() {
gulp.watch([
config.paths.sourcePattern,
config.paths.testPattern,
'gulpfile.js'
], gulp.parallel('test'));
}));
你可以找到完整的gulpfile.jshere。
【问题讨论】:
-
你能发布你的监视任务吗?
-
我用监视任务更新了问题。
-
如果你在 watch 任务上使用 gulp.series('lint', 'build', 'test') ,而不是直接依赖其他人,是不是也一样?
标签: typescript gulp watch