簡體   English   中英

Gulp.watch 任務未調用(gulp 4.0.0)

[英]Gulp.watch tasks not called (gulp 4.0.0)

我剛剛將一個舊項目從 gulp 3 遷移到 gulp 4.0.0。 我無法讓 gulp.watch 任務在我的手表 function 中運行。 我在 Windows 上運行。

手表function如下:

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 exports.watch = watch; .

當我運行時,我得到以下 output:

[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

也就是說 - 沒有文件被復制 - 沒有 output 從 function copytosomelocation 記錄到控制台。

我錯過了什么?

我忽略了對新結構進行必要的任務依賴性更改。

原表function結構如下:

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM