Javascript 我可以在监视的任务完成时发出吞咽通知吗?

Javascript 我可以在监视的任务完成时发出吞咽通知吗?,javascript,gulp,gulp-notify,Javascript,Gulp,Gulp Notify,我们有一个包含12项任务的gulpfile,其中4项由gulp.watch激活。当由gulp.watch启动的任务完成时,我想使用gulp notify。如果直接运行任务,我不希望吞下notify。示例代码如下: const debug = require("gulp-debug"), gulp = require("gulp"), notify = require("gulp-notify"); gulp.task("scripts:app", function ()

我们有一个包含12项任务的gulpfile,其中4项由
gulp.watch激活。当由
gulp.watch启动的任务完成时,我想使用
gulp notify
。如果直接运行任务,我不希望吞下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"]);
});
但这会导致对每个更改的文件发出通知。我希望任务完成时收到通知

换句话说,如果我运行
gulpscripts:app
,我将不会收到通知。当我运行
gulpwatch
并更改监视的文件时,应该会收到通知


如何执行此操作?

尝试将参数添加到生成脚本:

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
是一个简单的函数。它可以通过监视程序或“正常”任务注册进行调用。

尝试将参数添加到构建脚本中:

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
是一个简单的函数。它可以通过观察者或“正常”任务注册进行调用。

您可以为
脚本:app
任务提供一个参数,并检查
if
/
else
是否应该删除通知。@Sandrooco如何从观察中传入该参数?任务由名称标识。您可以为
脚本:app
任务提供一个参数,并使用
if
/
else
检查通知是否应删除。@Sandrooco我如何从手表中传入该参数?任务由名称标识。