gpt4 book ai didi

javascript - 当监视的任务完成时,我可以发出通知吗?

转载 作者:行者123 更新时间:2023-11-28 04:39:05 25 4
gpt4 key购买 nike

我们有一个包含约 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,则每次该任务运行时都会发出通知,无论该任务是如何启动的。同样,我想在监视任务完成时发出通知。

我考虑添加一个依赖于'scripts:app'的任务'scripts:app:notify',但如果可能的话我想避免创建“不必要的“任务。

我还尝试了以下方法:

gulp.watch("ts/**/*.ts", ["scripts:app"])
.on("change", function (x) { notify('changed!').write(''); });

但这会导致每个文件发生更改时都会收到通知。我希望在任务完成时收到通知。

换句话说,如果我运行gulpscripts: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 是一个简单的函数。它可以通过观察者或“正常”任务注册来调用。

关于javascript - 当监视的任务完成时,我可以发出通知吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43940367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com