我正在尝试使用Gulp来监视我的源代码更改然后编译,lint并重新加载我的应用程序。
根据我的理解,gulp.watch不允许过滤资源,因此如果更新spec / test文件,则会重新加载所有内容。例如:
jsSrc = ['!./app/**/*spec.js', './app/**/*.js']
gulp.task('watch', function() {
gulp.watch(jsSrc, ['scripts', 'jsLint', 'reload']);
});
根据我的理解,gulp-watch允许过滤资源,但是如何触发其他任务。
gulp.task('watch', function() {
gulp.src(jsSrc)
.pipe(require('gulp-watch')())
// how do I call tasks? ['scripts', 'jsLint', 'reload']
});
答案 0 :(得分:0)
gulp.task('scripts', function(event) {
//event.path (changed file)
//...
});
gulp.task('reload', function() { //... });
gulp.task('watch', function() {
gulp.watch(jsSrc,
//array of tasks to be executed when a file of jsSrc change
['scripts', 'reload']
);
});
答案 1 :(得分:0)
你没有。 gulp-watch
是一个发送所有文件但永不结束的流。然后,对于每个更改的文件,它再次发出它。您不能(直接)使用它来触发任务。
因为它永远不会发出end
,而且因为你得到的单个文件“脱离了上下文”这个插件比gulp.watch
更难处理,它只会再次触发整个任务。 / p>
不是说,我通常把它设置为
gulp = require("gulp");
gulp.task('a', function() { console.log('a'); });
gulp.task('b', function() { console.log('b'); });
gulp.task('default', ['a','b'], function(){
gulp.watch(['**/*.js','!**/foo.js'], ['a']);
gulp.watch(['**/*.css','!**/foo.css'], ['b']);
});
这样你忽略'foo.js'但是对于所有其他.js文件运行'a',对b来说是相同的。
请参阅https://github.com/isaacs/minimatch了解glob语法