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命令。

+0

我也会问你为什么认为你需要缓存。除非您通过覆盖默认值来更改缓存指令,否则Netlify将为您处理缓存失效并做得很好。 https://www.netlify.com/blog/2017/02/23/better-living-through-caching/描述如何。 – fool

+0

我认为这是更好的解决方案/答案,因为它不限制在Windows用户进行开发时使用的shell。 – talves

+0

@fool你能解释一下你在这种情况下通过cachebusting的意思吗 – talves

免责声明:我为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 
+0

'纱线运行构建&& hugo'是我的确切命令,但我仍然遇到上述问题。 –

+0

@ ErikBerkun-Drevnig那么别的东西可能是错的。对不起,我直到现在才看到这一点,但支持可以帮助调试。 – fool