如果添加了新文件,如何 运行 gulp 仅使用 watch 执行任务
How to run gulp task with watch ONLY if a new file was added
This question is asked on gulp 3.8.10, using gulp.watch not 'gulp-watch'
我的任务是将我所有的 html/css/js 文件注入我的 index.html
gulp.task('index', function () {
var sources = gulp.src(['./src/**/*.js', './src/**/*.css'], {read: false});
return gulp.src('./src/index.html')
.pipe(inject(sources, {ignorePath: 'src', addRootSlash: false }))
.pipe(gulp.dest('./src'));
});
此任务由以下人员自动触发:
gulp.watch('src/**/*', ['index']);
因为所有这些任务都是,将外部文件导入我的 index.html,就像这样:
<!-- inject:js -->
<script src="app/app.js"></script>
<script src="module/module.js"></script>
<!-- endinject -->
我想只有有观察者运行这个任务如果添加了一个新文件,它不会重新 运行 并修改我的 index.html 文件是有意义的,当我只是更改一个已经注入其中的文件时。
有没有办法用 gulp 做到这一点?
编辑: 接受答案后 这里是我给定示例的实际代码:
gulp.watch('src/**/*', function(event) {
if (event.type === 'added' ) {
gulp.start('index');
}
});
在任务或回调中,您将有一个 event
参数,其中有一个 type
属性,它会告诉您文件是否被添加、删除或更改.最好的选择可能是根据您的任务使用它。
function watcher(event){
if(event.type === 'added'){ /* do work */ }
}
请注意从 Google 来到这里的任何人,Gulp 4 的语法已更改。您应该改为执行以下操作:
gulp.watch('src/**/*', {events: ['add']}, gulp.series('index'));
This question is asked on gulp 3.8.10, using gulp.watch not 'gulp-watch'
我的任务是将我所有的 html/css/js 文件注入我的 index.html
gulp.task('index', function () {
var sources = gulp.src(['./src/**/*.js', './src/**/*.css'], {read: false});
return gulp.src('./src/index.html')
.pipe(inject(sources, {ignorePath: 'src', addRootSlash: false }))
.pipe(gulp.dest('./src'));
});
此任务由以下人员自动触发:
gulp.watch('src/**/*', ['index']);
因为所有这些任务都是,将外部文件导入我的 index.html,就像这样:
<!-- inject:js -->
<script src="app/app.js"></script>
<script src="module/module.js"></script>
<!-- endinject -->
我想只有有观察者运行这个任务如果添加了一个新文件,它不会重新 运行 并修改我的 index.html 文件是有意义的,当我只是更改一个已经注入其中的文件时。
有没有办法用 gulp 做到这一点?
编辑: 接受答案后 这里是我给定示例的实际代码:
gulp.watch('src/**/*', function(event) {
if (event.type === 'added' ) {
gulp.start('index');
}
});
在任务或回调中,您将有一个 event
参数,其中有一个 type
属性,它会告诉您文件是否被添加、删除或更改.最好的选择可能是根据您的任务使用它。
function watcher(event){
if(event.type === 'added'){ /* do work */ }
}
请注意从 Google 来到这里的任何人,Gulp 4 的语法已更改。您应该改为执行以下操作:
gulp.watch('src/**/*', {events: ['add']}, gulp.series('index'));