我有这样的事情:
gulp.task('default', ['css', 'browser-sync'] , function() {
gulp.watch(['sass/**/*.scss', 'layouts/*.css'], function() {
gulp.run('css');
});
});
但它不起作用,因为它监视sass和layouts目录这两个目录以进行更改。
我如何使其工作,以便gulp监视这些目录中发生的所有事件?
我有这样的事情:
gulp.task('default', ['css', 'browser-sync'] , function() {
gulp.watch(['sass/**/*.scss', 'layouts/*.css'], function() {
gulp.run('css');
});
});
但它不起作用,因为它监视sass和layouts目录这两个目录以进行更改。
我如何使其工作,以便gulp监视这些目录中发生的所有事件?
Answers:
gulp.task('default', ['css', 'browser-sync'] , function() {
gulp.watch(['sass/**/*.scss', 'layouts/**/*.css'], ['css']);
});
sass/**/*.scss
并且layouts/**/*.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']);
});
这样,您可以通过要观看的文件路径以及创建的任务名称来设置任意数量的任务。然后,您可以像这样编写默认值:
gulp.task('default', ['gulp task name for css/scss', 'gulp task name for js']);
如果您只想监视各种文件更改,则可以像*.css
在任务中那样使用glob监视文件。
If you have each gulp.task written properly
?
使用Gulp v3.x时,@ AJ Alger的答案对我有用。
但是从Gulp 4开始,以下内容似乎对我有用。
请注意,每个任务都必须返回一个值或调用“ done()”。此示例中的主要任务是“ watchSrc”,它并行调用其他任务。
gulp.task('watchHtml', function(){
return watch('src/**/*.html', function () {
gulp.src('src/**/*')
.pipe(gulp.dest(BUILD_DIR))
})
})
gulp.task('watchJS', function(){
return watch('src/**/*.js', 'devJS')
})
gulp.task('watchCSS', function(){
return watch(['src/**/*.css', 'src/**/*.scss'], 'buildStyles')
})
gulp.task('watchSrc', gulp.parallel('watchHtml', 'watchJS', 'watchCSS'), function(done)
{
done()
})
如果您将任务转换为函数
function task1(){
return gulp...
...
}
您可以使用2种有用的方法:
GULP.SERIES将同步运行任务
gulp.task('default', gulp.series(task1,task2));
GULP.PARALLEL将异步运行它们
gulp.task('default', gulp.parallel(task1,task2));