网络:如何串行运行构建任务?



我在让我的 Hugo 网站使用 Netlify 部署时遇到了问题。我想在部署之前使用 Webpack 编译我的静态资产(Sass 和 JS(,并且我正在为缓存破坏生成哈希,hugo 在生成页面之前需要读取这些哈希。因此,yarn run build需要在调用hugo之前完成运行。但是,从Netlify部署日志来看,这似乎并没有发生。

免责声明:我为netlify工作。

Jessica的回答几乎肯定更适合你的用例,但总的来说,如果人们不使用gulp/grunt/make等工具(构建环境中的选项主要是"你可以在Linux上运行的任何内容" - 见 https://www.netlify.com/blog/2016/10/18/how-our-build-bots-build-sites/(,你可以将命令链接在一起:

yarn run build && hugo

确保使用"&&"来链接命令 - 这不仅会串行运行它们,还可以确保yarn run build中的问题会导致构建被标记为失败,而不是无论如何运行hugo并可能发布一个损坏的构建,如果你使用,就会发生

yarn run build ; hugo

为了确保yarn run build调用的 Webpack 任务在调用hugo之前完成,我建议添加一个管道构建工具,比如 Gulp。维克多·雨果样板正是使用这种设置。摘录,它看起来像这样:

在包package.json中,build命令被定义为调用gulp build

"scripts": {
...
"build": "gulp build",
...
}

这将触发gulpfile.babel.js,它将build任务定义为一组三个子任务,顺序如下:

gulp.task("build", ["css", "js", "hugo"]);

这些子任务也在 gulpfile 中定义。在这种情况下,css被定义为运行PostCSS,js运行Webpack。您可以定义这些以匹配您的资产管道,并在文件顶部导入您需要的任何插件。

对于hugo任务,Victor Hugo 直接在存储库中包含 Hugo 二进制文件,这有助于可移植性。或者,您可以按照此示例进行操作,并使用gulp-shell插件在 shell 中运行hugo命令。

相关内容

最新更新