3

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

4

2 回答 2

11

免责声明:我为 netlify 工作。

杰西卡的答案几乎肯定更适合您的用例,但总的来说,如果人们不使用 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
于 2017-08-06T19:07:49.110 回答
2

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

在 packagepackage.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 中,这有助于可移植性。或者,您可以按照此示例并使用gulp-shell插件hugo在 shell 中运行命令。

于 2017-08-06T15:01:36.943 回答