[英]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.