终止gulp-watch任务

时间:2015-01-13 19:46:20

标签: gulp-watch

我希望我的gulp watch任务只运行一次,然后停止观看。现在,如果我跑了' gulp'从命令行,watch任务使gulp任务保持运行。我必须按Ctrl-C才能停止它。

3 个答案:

答案 0 :(得分:1)

当你运行gulp watch时,它将继续观察文件更改,直到你用CTRL-C取消它。我不想要这个,那么你可以做一个单独的gulp任务来完成你的建设。

然后你将有2个任务:gulp watch和gulp build。由于构建不会运行监视任务,它将在完成时停止。

请看一下我的GitHub项目,我会做这样的事情:skeletonSPA on GitHub。 如果您查看gulpfile.js,您会看到default任务将执行build任务。 转而构建任务将执行infocleanstylesscriptsimagescopytodo;给你一个完整的构建和工作前端。

运行这些任务后,它将停止并让您专注于命令行。

答案 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,完成后将运行buildwatch退出)。

注意:我正在使用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有关。