【问题标题】:Gulp.watch tasks not called (gulp 4.0.0)未调用 Gulp.watch 任务(gulp 4.0.0)
【发布时间】:2019-10-04 19:41:05
【问题描述】:

我刚刚将一个旧项目从 gulp 3 迁移到 gulp 4.0.0。我无法让 gulp.watch 任务在我的 watch 函数中运行。我在 Windows 上运行。

手表功能如下:

function watch(done) {
  gulp.watch(LAYOUTSFILES, copytosomelocation);
  gulp.watch(MODULEFILES, copymodulestosomelocation);
  gulp.watch(DLLFILES, gacdeploy);
  gulp.watch("./Styles/**/*.less", cssless);

  console.log("watching");
  done();
}

位置的格式如下(在 gulp 3 中工作,因此位置至少是正确的):

let LAYOUTSFILES = [
  "./Folder/Project/**/*.*"
];

这是第一个被调用的任务:

function copytosomelocation() {
  console.log("In copy");
  return gulp.src(LAYOUTSFILES)
    .pipe(fileCache.filter())
    .pipe(gulp.dest(OUTLAYOUTS));
}

在 gulpfile 的末尾,我有exports.watch = watch;

当我运行时,我得到以下输出:

[18:43:59] Using gulpfile 
D:\git\repo\folder\someproject\gulpfile.js
[18:43:59] Starting 'watch'...
watching
[18:43:59] Finished 'watch' after 17 ms

也就是说 - 没有文件被复制 - 没有输出从函数copytosomelocation记录到控制台。

我错过了什么?

【问题讨论】:

    标签: javascript gulp


    【解决方案1】:

    我忽略了将必要的任务依赖性更改带到新结构中。

    原来的watch函数结构如下:

    gulp.task("watch", ["webpack-watch"], () => { ... });
    

    其中描述了对以下内容的依赖:

    gulp.task('webpack-watch', (done) => {
      runWebpack(["-d"], true, done);
    });
    
    function runWebpack(params, watch, done) {
      params = params || [];
      params.push("--color");
      if (watch) {
        params.push("-w");
      }
      if (watch) {
        spawnCommand("webpack", params);
        done(); //return immidiately when watching
      } else {
        spawnCommand("webpack", params, done);
      }
    }
    

    如果没有这个功能,gulp 正在监视一个只有在 webpack-watch 运行时才会更新的目录。我通过如下更新手表导出解决了这个问题:

    exports.watch = gulp.series('webpack-watch', watch);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 2019-02-09
      相关资源
      最近更新 更多