Netlify:如何以串行方式运行构建任务?
我无法让我的Hugo站点与Netlify一起部署。我想在部署之前使用Webpack编译我的静态资产(Sass和JS),并且我正在生成散列,以便在生成页面之前,hugo需要读取缓存。因此,在调用hugo
之前,yarn run build
需要完成运行。但是,从Netlify部署日志来看,这似乎没有发生。Netlify:如何以串行方式运行构建任务?
为了确保在调用hugo
之前完成由yarn run build
调用的Webpack任务,我建议添加一个管道构建工具,比如Gulp。 Victor Hugo boilerplate完全使用此设置。摘录,它看起来像这样:
在包package.json
,该build
命令定义调用gulp build
:
"scripts": {
...
"build": "gulp build",
...
}
这将触发gulpfile.babel.js
,它定义了build
任务为一组的三个子任务, order:
gulp.task("build", ["css", "js", "hugo"]);
这些子任务也在gulpfile中定义。在这种情况下,css
被定义为运行PostCSS,并且js
运行Webpack。你可以定义这些以匹配你的资产管道,在文件的顶部导入你需要的任何插件。
对于hugo
任务,Victor Hugo直接在回购中包含Hugo二进制文件,这有助于便携性。或者,您可以关注this example并使用gulp-shell
插件在shell中运行hugo
命令。
免责声明:我为netlify工作。在一般情况下,如果人们不使用像gulp/grunt/make这样的工具(在构建环境中的选项是“你可以在Linux上运行的任何东西” - 参见https://www.netlify.com/blog/2016/10/18/how-our-build-bots-build-sites/),你可以连锁的命令在一起:
yarn run build && hugo
确保使用“& &”,以连锁的命令 - 这不仅运行它们串联,这也将确保在纱线行进构建一个问题会导致该构建被标记为失败,而不是运行hugo,并且可能发布破坏的构建,如果使用
yarn run build ; hugo
'纱线运行构建&& hugo'是我的确切命令,但我仍然遇到上述问题。 –
@ ErikBerkun-Drevnig那么别的东西可能是错的。对不起,我直到现在才看到这一点,但支持可以帮助调试。 – fool
我也会问你为什么认为你需要缓存。除非您通过覆盖默认值来更改缓存指令,否则Netlify将为您处理缓存失效并做得很好。 https://www.netlify.com/blog/2017/02/23/better-living-through-caching/描述如何。 – fool
我认为这是更好的解决方案/答案,因为它不限制在Windows用户进行开发时使用的shell。 – talves
@fool你能解释一下你在这种情况下通过cachebusting的意思吗 – talves