我想创建一个任务,该任务只在发生更改时构建整个项目。为此,我正在比较散列(与问题无关(。
const buildIfChanged = async () => {
const hash = await getHash();
const newHash = await getNewHash();
if (hash !== newHash) {
console.log("START");
const task = series(build, cleanup)();
console.log("END", task);
}
};
在本例中,task
是undefined
,因此我无法添加.on("end", ...)
并在之后解析promise。我也等不及了。
问题是,因为我没有等待它完成,buildIfChanged
任务甚至在build
有机会运行之前就完成了。
有什么方法可以用现代的gullfile做到这一点吗?
我已经找到了在现代gulpfiles中如何做到这一点的解决方案。parallel
和series
的函数调用实际上将一个已完成的函数作为参数。
所以要解决这个问题,你可以做:
const buildIfChanged = async () => {
return new Promise(async (res, rej) => {
try {
const hash = await getHash();
const newHash = await getNewHash();
if (hash !== newHash) {
console.log("START");
const task = series(build, cleanup)(() => res()); // add the done function here
console.log("END", task);
}
} catch(e) {
rej(e);
}
})
};