Gulp 监听多个文件夹

9
在一个项目的开发过程中,我希望能够使用Babel来监视和重新编译服务器端的代码(因为我想在Parse上使用“ES6”),并使用Browserify/Watchify来监视和重新编译客户端的代码。我该怎么做呢?我可以分别编写两个监视任务,但是我需要打开两个终端窗口以便同时监视这两个目录。有没有可能通过一个gulp任务同时完成这两个任务呢?比如说执行两个任务?

我添加了一个答案,但我现在有一个问题,你需要帮忙写任务吗,还是只写手表? - Jacques ジャック
1个回答

31

是的,你可以做你想做的事。

gulp.task('watch', function() {
    gulp.watch(['directoryA/**/*.js', 'directoryB/js/**/*.js'], ['task']);
});

如果您想观看其他文件类型,也可以将更多的内容添加到数组中。例如:'directoryA/**/*.html'

如果您想要像您提到的那样运行两个不同的任务,请将其更改为:

gulp.task('watch', function() {
    gulp.watch(['directoryA/**/*.js'], ['taskA']);
    gulp.watch(['directoryB/**/*.js'], ['taskB']);
});

这是我使用 BrowerifyBabelify 的一个示例gulp任务。

gulp.task('taskA', function() {
    return browserify('path/to/file.js')
    .transform('babelify')
    .bundle()
    .pipe(source('file.js')) // this is the output file name
    .pipe(gulp.dest('destination/directory/')); // and this is where it ends up
});

编辑

我刚刚意识到我没有说明你是否需要一个或两个任务。技术上来说,你可以选择任何一种方式,但最好的方法是拥有两个独立的任务。


我更喜欢只有一个任务,这样在开发期间,我就可以只运行 gulp watch 命令来观察我需要的所有文件夹。 - Jiew Meng
澄清一下,我指的是你的监听任务将调用的任务数量。如果你看一下我的第二个例子,它是一个 gulp 任务,将监听两个目录并针对每个目录触发不同的任务。 - Jacques ジャック
我认为我需要像你的第二个例子那样的东西,除了1将是一个gulp.watch,一个应该是调用启动watchify任务。我该如何做后者? - Jiew Meng
@JiewMeng 那个 pastebin 只有在你有一个任务标题为“watchify”的情况下才能起作用。无论如何,如果这有助于您解决问题,请点赞或将其选为正确答案。如果您有更多问题,请在评论中提出,我会尽力回答。 - Jacques ジャック

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接