我目前有三個吞嚥任務,利用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 watch('b/**/*.js', function() {
// [...]
});
});
gulp.task('watch:c', function() {
return watch('c/**/*.js', function() {
// [...]
});
});
不過,我目前的工作流程,我不得不打開三個終端,並單獨解僱他們。
有沒有一種方法可以讓我們有一個吞噬任務,它產生三個獨立的終端窗口,每個任務運行?我已經查看了child process,但尚未能制定解決方案。理想情況下,我的東西可視化這樣...
gulp.task('watch', function() {
launchProcess('gulp watch:a');
launchProcess('gulp watch:b');
launchProcess('gulp watch:c');
});
凡launchProcess
具有某種魔力,所以我可以鞏固這些成一個命令。我只是在這裏尋找便利,因爲可能有三個以上的進程。我對於手動解除這些過程的想法感到畏縮。
這是我初步的嘗試,從Answer: Gulp – How Can I Open A New Tab In Terminal?拍攝,但這個(只是想解僱一個觀察者)不會讓我的觀察者任務按預期方式工作 - 什麼也沒有發生在文件上的變化。
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);
});
});
我喜歡單線。也許我很困惑,但我認爲這些掛起的監視任務需要在他們自己的獨立實例中運行,但我很高興看到它按預期工作。我會接受你的答案,因爲它更清潔。是的,這是我之後的行爲,因爲我認爲我*需要*單獨的終端(標籤),但我沒有看到這種約束。如果產卵終端窗口是可能的,仍然會喜歡知道它仍然在逃避我。歡呼聲 – scniro
手錶不一定非要在自己的任務中。通常分離任務以清楚地返回每個流都是很好的。由於你的手錶都有'return'語句,等待他們的其他任務將知道它們何時完成。我的三個手錶加在一起的任務不會返回任何東西,所以你會失去它(除非你使用[merge-stream](https://www.npmjs.com/package/merge-stream))。但是,其他任務通常不依賴於完成監視任務(因爲它們是正在進行的任務並不真正結束),所以在這種情況下,如果有意義的話,不返回流是很好的。 – MadScone