有什么办法可以为单个存储库和多个站点提供通用的 netlify.toml 文件吗?

Utk*_*rma 1 hugo netlify

我正在寻找一种方法来定义 netlify 上的两个站点构建,它们来自同一个存储库,使用单个 common netlify.toml. 可以这样做吗?

我有一个名为hugo-dream-plus的 GitHub 存储库,我在 netlify 上配置了两个网站构建,即dream-plus-postsdream-plus-cards。这两个构建共享相同的环境变量和大部分配置,除了构建命令:

hugo --config cards.toml     #For dream-plus-cards
hugo --config posts.toml     #For dream-plus-posts
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以让我创建一个通用netlify.toml文件,因为这两个站点的两个版本的存储库都是相同的。

我已经使用Web UI来单独配置每个构建,但是修改每个构建都相当麻烦,这就是为什么我更喜欢上面的场景。

我计划做的是在两个构建之间共享所有配置,除了构建命令之外,该命令将单独定义,如上所示。

tal*_*ves 5

截至本答案发布之日,Netlify 不支持更改 中的值的方法netlify.toml,因为它是在构建之前读取的。除了标头和重定向之外,它们允许您在构建时进行更改。

不支持直接使用环境变量作为 netlify.toml 文件中的值 ($VARIABLENAME)。

然而

您可以运行脚本命令并根据域或环境变量对其进行更改。有一些设置可以发挥作用。

以下是我如何根据域名完成您想要的事情。

netlify.toml

[build]
  command = "node ./scripts/custom.js"
  publish = "public"
Run Code Online (Sandbox Code Playgroud)

scripts/custom.js

[build]
  command = "node ./scripts/custom.js"
  publish = "public"
Run Code Online (Sandbox Code Playgroud)

注意事项:

  • 我没有使用 Hugo 的这种方法来测试日志的标准输出。子进程捕获输出并将其返回到标准输出中。
  • 我们不想捕获错误,因为我们希望构建因错误而失败,因此这将导致退出代码不是 0
  • 您可以使用此解决方案内联其他命令(即“node ./scripts/custom.js && 部署之前的其他命令”)
  • 您也可以只检查您设置的环境变量而不是域名