Javascript 如何在各自的终端中生成多个gulp watch任务?
我目前有三项任务,即利用。它们本质上是基本的,并且被表示(简化)为Javascript 如何在各自的终端中生成多个gulp watch任务?,javascript,node.js,gulp,gulp-watch,Javascript,Node.js,Gulp,Gulp Watch,我目前有三项任务,即利用。它们本质上是基本的,并且被表示(简化)为 var gulp = require('gulp'); var watch = require('gulp-watch'); gulp.task('watch:a', function() { return watch('a/**/*.js', function () { // [...] }); }); gulp.task('watch:b', function() { return
var gulp = require('gulp');
var watch = require('gulp-watch');
gulp.task('watch:a', function() {
return watch('a/**/*.js', function () {
// [...]
});
});
gulp.task('watch:b', function() {
return watch('b/**/*.js', function () {
// [...]
});
});
gulp.task('watch:c', function() {
return watch('c/**/*.js', function () {
// [...]
});
});
gulp.task('watch', function() {
launchProcess('gulp watch:a');
launchProcess('gulp watch:b');
launchProcess('gulp watch:c');
});
然而,在我当前的工作流程中,我不得不打开三个终端,并分别启动它们
是否有一种方法可以代替一个“吞咽”任务,即在每个任务运行时生成三个独立的终端窗口?我已经研究过了,但还没有找到解决办法。理想情况下,我是在想象这样的事情
var gulp = require('gulp');
var watch = require('gulp-watch');
gulp.task('watch:a', function() {
return watch('a/**/*.js', function () {
// [...]
});
});
gulp.task('watch:b', function() {
return watch('b/**/*.js', function () {
// [...]
});
});
gulp.task('watch:c', function() {
return watch('c/**/*.js', function () {
// [...]
});
});
gulp.task('watch', function() {
launchProcess('gulp watch:a');
launchProcess('gulp watch:b');
launchProcess('gulp watch:c');
});
其中launchProcess
具有一些魔力,因此我可以将它们合并到一个命令中。我只是在这里寻找方便,因为可能有三个以上的过程。一想到要手动发射成吨的这些过程,我就畏缩不前
这是我最初的尝试,取自,但这(只是尝试启动一个观察者)并没有让我的观察者任务按预期工作-文件更改不会发生任何变化
var exec = require('child_process').exec;
gulp.task('watch', function(cb) {
exec('gulp watch:a', function (err, stdout, stderr) {
console.log(stdout);
console.log(stderr);
cb(err);
});
});
我想我已经找到了一种非传统的方法来实现这一点,考虑到上面的反对意见,但是所有的测试都表明这将如预期的那样工作。我可以简单地调用
gulp.start()
,我在。嗯,我觉得很好
gulp.task('watch', function() {
gulp.start('watch:a');
gulp.start('watch:b');
gulp.start('watch:c');
});
所有任务似乎都在一个终端实例中适当地侦听。我要了 您自己的解决方案并不是我从您的问题中所期望的,因为正如您自己所说,它不会打开新的终端选项卡或任何东西 如果你对此感到满意,下面的一行将与你的答案具有相同的效果。它还避免了gulp.start(),gulp的作者不推荐使用它
gulp.task('watch', ['watch:a', 'watch:b', 'watch:c']);
或者,如果可能的话,你也可以将你的观察任务组合在一起,如下所示。尽管这样,如果你想单独执行这些任务,你就失去了单独执行这些任务的能力
gulp.task('watch', function() {
watch('a/**/*.js', function () {
// [...]
});
watch('b/**/*.js', function () {
// [...]
});
watch('c/**/*.js', function () {
// [...]
});
});
我喜欢一行。也许我有点困惑,但我曾一度认为这些挂起的监视任务需要在各自的实例中运行,但我很高兴看到它按预期工作。我会接受你的回答,因为它更干净。是的,这就是我所追求的行为,因为我认为我需要单独的终端(选项卡),但我没有看到这种约束。我仍然很想知道是否有可能生成终端窗口,但我还是不知道。啦啦队不一定非得有自己的任务。通常最好将任务分开,以便从每个任务干净地返回流。由于您的手表都有
return
语句,等待它们的其他任务将知道它们何时完成。我的三块手表组合的任务不会返回任何东西,所以你会丢失它(除非你使用类似的东西)。但是其他任务通常不依赖于监视任务的完成(因为它们是正在进行的任务,不会真正结束),因此在这种情况下,如果有意义的话,不返回流是可以的。