Gulp del 和/或 runsequence 会导致本地主机 Wordpress 中断,但在浏览器刷新后工作



我构建了一个gulp项目,允许我在工作文件夹之外的wordpress安装中构建和观看wordpress主题(骨骼):

Working folder: localhost/sites/testbed/
- dev-bones
- node_modules
- gulpfile.js
- package.json
- package-lock.json
Target folder: localhost/sites/my-wordpress-site/wp-content/themes/
- bones

我安装了"del"和"run-sequence",以便我可以在构建序列开始之前删除目标文件夹。

del task:

gulp.task('clean:dirbuild', function() {
// If build directory is outside the working folder:
return del.sync(dir.build, {force: true});
// If inside:
// return del.sync(dir.build);
});

构建任务:

gulp.task('build', function (callback) {
runSequence('clean:dirbuild', 
['php', 'css', 'js', 'copyroot', 'copytranslation'],
callback
)
});

默认任务:

gulp.task('default', ['build', 'watch']);

键入"gulp watch"后,浏览器启动并加载wordpress网站。但是我得到一个白色的屏幕,上面有一条消息,说通往骨骼.php路径不存在。

我检查了目标文件夹,它确实存在。

挠了一会儿后,我手动刷新了浏览器,网站加载正确。

我已经经历了上述代码的许多排列,总是得到相同的结果。

我在堆栈溢出上找到了这篇文章:运行序列不会按顺序运行 gulp 任务,但它似乎不适合我的情况。

我已经将完整的gulpfile上传到Github。

如果有人能给它一次,看看我哪里出错了,我将不胜感激。

更新 我回到了我从中获得"del"任务的教程。在评论中,作者指出他错过了任务中的东西:回调。

所以我更新了代码:

gulp.task('clean:dirbuild', function(callback) {
// If build directory is outside the working folder:
return del.sync(dir.build, {force: true}, callback);
// If inside:
// return del.sync(dir.build, callback);
});

并输入"咕噜咕噜"。

这次我得到的只是一个白屏,手动刷新没有加载网站。

好的,我想通了。问题在于"默认"任务的执行顺序:一些"监视"任务在"构建"任务之前、期间和之后触发。

所以我保留了一切,除了我改变了:

默认任务

gulp.task('default', ['build', 'watch']);

gulp.task('default', function (callback) {
runSequence('build', ['watch'], callback)
});

这可确保"监视"任务将在"构建"任务之后运行。

现在,一切都按预期工作。

注意:我已经从GitHub中删除了示例gulpfile.js。当我完成我的项目并在GitHub上获得它时,我将从这里发布一个指向它的链接。

最新更新