我希望我的吞咽监视任务只运行一次,然后停止监视。现在,如果我从命令行运行' gulp‘,那么watch task会让gulp任务继续运行。我必须按Ctrl-C来阻止它。
发布于 2015-05-19 20:10:41
当你运行gulp时,它会一直关注文件的变化,直到你用CTRL-C取消它。如果你不想这样,那么你可以做一个单独的吞咽任务来做你的建筑。
那么你将有两个任务:大口观看和大口大口地构建。由于构建不会运行监视任务,因此它将在完成时停止。
请看我的一个GitHub项目,我在其中做了这样的事情:skeletonSPA on GitHub。如果查看gulpfile.js,就会看到default任务将执行build任务。构建任务将执行info、clean、styles、scripts、images、copy、todo;为您留下完整的构建和工作前端。
运行这些任务后,它将停止并将焦点转移到命令行。
发布于 2017-05-01 11:02:50
下面是一个非常基本的GulpFile.js示例
var gulp = require('gulp'),
watch = require('gulp-watch'),
runSequence = require('gulp-sequence'),
webpack = require('webpack-stream');
gulp.task('webpack', function() {
return gulp.src('client/index.js')
.pipe(webpack({
output: {
filename: 'dist/bundle.js'
},
devtool: 'source-map'
}))
.pipe(gulp.dest('.'));
});
// other tasks
gulp.task('build', ['webpack', 'other tasks... ']);
gulp.task('watch', function(callback) {
gulp.watch('./client/**/*.js', {}, ['webpack']);
// more watches if required
});
gulp.task('default', function(callback) {
runSequence('build', 'watch', callback);
});$ gulp build >将只运行build一次,然后退出。
$ gulp watch >将开始观看(按ctrl-c退出)。
$ gulp >将执行build,完成后将运行watch (ctrl-c退出)。
注意:我使用gulp-sequence插件来确保在运行$ gulp时,构建将在监视开始之前完成。
发布于 2020-05-04 23:08:20
gulp.watch返回一个FSWatcher对象,该对象有一个.close()方法,您可以调用它来取消监视任务:
var watchStream = gulp.watch(
src,
{ignoreInitial: true},
myGulpTask)
.on("change", function (triggerFileName) {
watchStream.close();
});当监视程序启动时,ignoreInitial = true会阻止任务运行。watchStream.close()将取消观察器,但该任务将运行一次。所以总而言之,你会得到一个任务运行。
这是Gulp 4。
https://stackoverflow.com/questions/27930288
复制相似问题