【发布时间】:2018-01-13 00:06:45
【问题描述】:
我无法使用 Netlify 部署我的 Hugo 网站。我想在部署之前使用 Webpack 编译我的静态资产(Sass 和 JS),并且我正在生成用于缓存破坏的哈希值,hugo 在生成页面之前需要读取这些哈希值。因此yarn run build 需要在hugo 被调用之前完成运行。然而,从 Netlify 部署日志来看,这似乎并没有发生。
【问题讨论】:
标签: static-site hugo netlify
我无法使用 Netlify 部署我的 Hugo 网站。我想在部署之前使用 Webpack 编译我的静态资产(Sass 和 JS),并且我正在生成用于缓存破坏的哈希值,hugo 在生成页面之前需要读取这些哈希值。因此yarn run build 需要在hugo 被调用之前完成运行。然而,从 Netlify 部署日志来看,这似乎并没有发生。
【问题讨论】:
标签: static-site hugo netlify
为了确保yarn run build 调用的Webpack 任务在调用hugo 之前完成,我建议添加一个管道构建工具,比如Gulp。 Victor Hugo boilerplate 正是使用此设置。摘录下来是这样的:
在包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 二进制文件直接包含在 repo 中,这有助于可移植性。或者,您可以关注this example 并使用gulp-shell 插件在shell 中运行hugo 命令。
【讨论】:
免责声明:我为 netlify 工作。
Jessica 的答案几乎肯定更适合您的用例,但总的来说,如果人们不使用 gulp/grunt/make 之类的工具(构建环境中的选项主要是“您可以在 linux 上运行的任何东西” - 请参阅 @ 987654321@),您可以将命令链接在一起:
yarn run build && hugo
确保使用“&&”链接命令 - 这不仅会连续运行它们,还会确保 yarn run build 中的问题会导致构建被标记为失败,而不是运行 hugo 和如果您使用
,可能会发布损坏的构建yarn run build ; hugo
【讨论】:
yarn run build && hugo 是我的确切命令,但我仍然遇到上述问题。