Gulp.watch任务未调用(gulp 4.0.0)

问题描述 投票:0回答:1

我刚刚将旧项目从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个回答
0
投票

我忽略了对新结构进行必要的任务依赖项更改。

原始监视功能的结构如下:

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时才会更新。我通过更新watch出口来解决此问题,如下所示:

exports.watch = gulp.series('webpack-watch', watch);
© www.soinside.com 2019 - 2024. All rights reserved.