我目前有三个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 watch('b/**/*.js', function () {
// [...]
});
});
gulp.task('watch:c', function() {
return watch('c/**/*.js', function () {
// [...]
});
});
但是,根据我目前的工作流程,我被迫打开三个终端,然后单独启动它们。
有没有办法可以改为执行一项gulp任务,每个任务运行时会生成三个独立的终端窗口?我调查了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);
});
});
答案 0 :(得分:1)
你自己的解决方案并不是我对你的问题所期望的,因为正如你自己所说的那样,它并没有打开新的终端标签或任何东西。
如果您对此感到满意,则以下行与您的答案具有相同的效果。它还避免了Gulp的作者不推荐使用的gulp.start()
。
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 () {
// [...]
});
});
答案 1 :(得分:0)
我认为,鉴于对this gulp.js project issue的弃用评论,我发现也许是一种非常规方式来解决这个问题,但所有测试表明这将按预期工作。我可以简单地拨打gulp.start()
,我在gulp.js API docs中没有看到。嗯,对我来说似乎很好......
gulp.task('watch', function() {
gulp.start('watch:a');
gulp.start('watch:b');
gulp.start('watch:c');
});
所有任务似乎都在单个终端实例中正确监听。我会接受的!