我希望我的gulp watch任务只运行一次,然后停止观看。现在,如果我跑了' gulp'从命令行,watch任务使gulp任务保持运行。我必须按Ctrl-C才能停止它。
答案 0 :(得分:1)
当你运行gulp watch时,它将继续观察文件更改,直到你用CTRL-C取消它。我不想要这个,那么你可以做一个单独的gulp任务来完成你的建设。
然后你将有2个任务:gulp watch和gulp build。由于构建不会运行监视任务,它将在完成时停止。
请看一下我的GitHub项目,我会做这样的事情:skeletonSPA on GitHub。
如果您查看gulpfile.js
,您会看到default
任务将执行build
任务。
转而构建任务将执行info
,clean
,styles
,scripts
,images
,copy
,todo
;给你一个完整的构建和工作前端。
运行这些任务后,它将停止并让您专注于命令行。
答案 1 :(得分:0)
以下是一个非常基本的示例var arrays = {
Array1: [A,B,C,D],
Array2: [D,B,C,A],
Array3: [B,C,A,D],
Array4: [A,D,B,C]
}
for(var row = 1; row <=4; row++){
for(var column = 0; column <=3; column++){
if(row<4 && arrays["Array" + row][column] == arrays["Array" + (row + 1)][column]){
console.log("Value of Array" + row + "column" + column + "is equal to" + "value of Array" + (row + 1) + "column" + column + "\n");
}
}
}
:
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);
});
&gt;只需运行$ gulp build
一次,然后退出。
build
&gt;将开始观看($ gulp watch
退出)。
ctrl-c
&gt;将执行$ gulp
,完成后将运行build
(watch
退出)。
注意:我正在使用ctrl-c
插件,以确保在运行gulp-sequence
时,构建将在手表开始之前完成。
答案 2 :(得分:0)
gulp.watch返回一个FSWatcher对象,该对象具有一个.close()方法,您可以调用该方法来取消监视任务:
var watchStream = gulp.watch(
src,
{ignoreInitial: true},
myGulpTask)
.on("change", function (triggerFileName) {
watchStream.close();
});
ignoreInitial = true
阻止任务在观察程序启动时运行。 watchStream.close()
将取消观察者,但任务将运行一次。因此,总而言之,您将运行一个任务。
这与Gulp 4有关。