如何吞噬多个文件?

我有这样的东西:

gulp.task('default', ['css', 'browser-sync'] , function() { gulp.watch(['sass/**/*.scss', 'layouts/*.css'], function() { gulp.run('css'); }); }); 

但它不起作用,因为它监视两个目录,即sass和布局目录以进行更改。

我如何使它工作,以便吞食这些目录内发生的任何事情?

 gulp.task('default', ['css', 'browser-sync'] , function() { gulp.watch(['sass/**/*.scss', 'layouts/**/*.css'], ['css']); }); 

sass/**/*.scsslayouts/**/*.css .css将会观察每个目录和子目录对.scss.css文件的任何改变。 如果你想改变任何文件使最后一点*.*

你可以写一个像这样的手表。

 gulp.task('watch', function() { gulp.watch('path/to/file', ['gulp task name for css/scss']); gulp.watch('path/to/file', ['gulp task name for js']); }); 

通过这种方式,您可以通过您想要观看的文件path以及所创build的任务的名称来设置任意数量的任务。 那么你可以写下你的默认像这样:

 gulp.task('default', ['gulp task name for css/scss', 'gulp task name for js']); 

如果你想简单地观察各种文件的变化,那么只需要在你的任务中使用象*.css这样的glob来观察文件。

多人(包括我)面临的一个问题是,在任务之外添加gulp.filter会导致gulp.watch在第一次传递后失败。 所以,如果你有这样的事情:

 var filter = gulpFilter(['fileToExclude.js']) gulp.task('newTask', function(){ ... 

那么你需要改变它:

 gulp.task('newTask', function(){ var filter = gulpFilter(['fileToExclude.js']) 

filter必须包含在任务function中。 希望能帮助别人。