我可以 gulp- 在监视的任务完成时通知吗?
Can I gulp-notify when a watched task completes?
我们有一个包含 ~12 个任务的 gulpfile,其中 4 个由 gulp.watch
激活。当 gulp.watch
启动的任务完成时,我想使用 gulp-notify
。如果任务直接 运行,我不想 gulp-notify
做任何事情。示例代码如下:
const
debug = require("gulp-debug"),
gulp = require("gulp"),
notify = require("gulp-notify");
gulp.task("scripts:app", function () {
return gulp.src(...)
.pipe(debug({ title: "tsc" }))
.pipe(...); // <--- if i add notify here,
// I will always get a notification
});
gulp.task("watch", function () {
gulp.watch("ts/**/*.ts", ["scripts:app"]);
});
如果我在 'scripts:app'
任务中通过管道传输到 notify
,它会在每次该任务 运行 时发出通知,无论该任务是如何启动的。同样,我想在 watched 任务 完成时发出通知。
我考虑过添加一个依赖于 'scripts:app'
的任务 'scripts:app:notify'
,但如果可能的话,我想避免创建 "unnecessary" 个任务。
我还尝试了以下方法:
gulp.watch("ts/**/*.ts", ["scripts:app"])
.on("change", function (x) { notify('changed!').write(''); });
但这会导致每个文件更改时都会收到通知。我想要在任务 完成 .
时收到通知
换句话说,如果我运行gulp scripts:app
,我不应该收到通知。当我 运行 gulp watch
更改监视的文件时,我 应该 收到通知。
我该怎么做?
尝试将参数添加到您的构建脚本中:
function buildApp(notify){
return gulp.src(...)
.pipe(...)
.pipe(function(){
if (notify) {
//drop notification
}
});
});
}
//Register watcher
gulp.watch("ts/**/*.ts", function(){
var notify = true;
buildApp(notify);
});
//Register task so we can still call it manually
gulp.task("scripts:app", buildApp.bind(null, false));
如您所见,buildApp
是一个简单的函数。它可以通过观察者或 "normal" 任务注册来调用。
我们有一个包含 ~12 个任务的 gulpfile,其中 4 个由 gulp.watch
激活。当 gulp.watch
启动的任务完成时,我想使用 gulp-notify
。如果任务直接 运行,我不想 gulp-notify
做任何事情。示例代码如下:
const
debug = require("gulp-debug"),
gulp = require("gulp"),
notify = require("gulp-notify");
gulp.task("scripts:app", function () {
return gulp.src(...)
.pipe(debug({ title: "tsc" }))
.pipe(...); // <--- if i add notify here,
// I will always get a notification
});
gulp.task("watch", function () {
gulp.watch("ts/**/*.ts", ["scripts:app"]);
});
如果我在 'scripts:app'
任务中通过管道传输到 notify
,它会在每次该任务 运行 时发出通知,无论该任务是如何启动的。同样,我想在 watched 任务 完成时发出通知。
我考虑过添加一个依赖于 'scripts:app'
的任务 'scripts:app:notify'
,但如果可能的话,我想避免创建 "unnecessary" 个任务。
我还尝试了以下方法:
gulp.watch("ts/**/*.ts", ["scripts:app"])
.on("change", function (x) { notify('changed!').write(''); });
但这会导致每个文件更改时都会收到通知。我想要在任务 完成 .
时收到通知换句话说,如果我运行gulp scripts:app
,我不应该收到通知。当我 运行 gulp watch
更改监视的文件时,我 应该 收到通知。
我该怎么做?
尝试将参数添加到您的构建脚本中:
function buildApp(notify){
return gulp.src(...)
.pipe(...)
.pipe(function(){
if (notify) {
//drop notification
}
});
});
}
//Register watcher
gulp.watch("ts/**/*.ts", function(){
var notify = true;
buildApp(notify);
});
//Register task so we can still call it manually
gulp.task("scripts:app", buildApp.bind(null, false));
如您所见,buildApp
是一个简单的函数。它可以通过观察者或 "normal" 任务注册来调用。