【问题标题】:Terminate gulp-watch task终止 gulp-watch 任务
【发布时间】:2015-03-11 21:21:17
【问题描述】:

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

【问题讨论】:

    标签: gulp-watch


    【解决方案1】:

    当您运行 gulp watch 时,它会一直监视文件更改,直到您使用 CTRL-C 取消它。如果你不想要这个,那么你可以做一个单独的 gulp 任务来完成你的构建。

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

    请查看我的 GitHub 项目,我在其中执行以下操作:skeletonSPA on GitHub。 如果您查看gulpfile.js,您会看到default 任务将执行build 任务。 构建任务将依次执行infocleanstylesscriptsimagescopytodo;为您提供完整的构建和工作前端。

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

    【讨论】:

      【解决方案2】:

      这是一个非常基本的例子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,完成后它将运行watchctrl-c 退出)。

      注意:我使用gulp-sequence 插件来确保在运行$ gulp 时构建将在手表开始之前完成。

      【讨论】:

        【解决方案3】:

        gulp.watch 返回一个 FSWatcher 对象,它有一个 .close() 方法,你可以调用它来取消监视任务:

        var watchStream = gulp.watch(
            src, 
            {ignoreInitial: true},
            myGulpTask)
        
            .on("change", function (triggerFileName) {
                watchStream.close();
            });
        

        ignoreInitial = true 在 watcher 启动时阻止任务运行。 watchStream.close() 将取消观察者,但任务将运行一次。总而言之,您可以运行一项任务。

        这是 Gulp 4。

        【讨论】:

          猜你喜欢
          • 2015-07-14
          • 2016-10-03
          • 2018-11-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-04
          • 2018-01-01
          • 1970-01-01
          相关资源
          最近更新 更多