9

我们对所有推送的 git 分支使用 Netlify 的自动部署。

我们希望仅包含主分支的分析脚本(等),即我们的用户正在访问的网站版本。

可以在 Netlify 上构建环境变量,但我不知道是否可以区分某些分支的变量?

4

1 回答 1

12

有一种方法可以根据文件中 Netlify 中的部署上下文设置环境变量netlify.toml。这在使用 Hugo 的生产站点中使用,但您可以使用任何您想要的变量和命令键。

一个例子netlify.toml

# Global settings applied to the whole site.
[build]
  command = "yarn build"
  publish = "public"

# build a preview of the site (Drafts and Future dates also)
[context.deploy-preview]
  command = "yarn build:preview"

[build.environment]
  HUGO_ENV = "development"

[context.production.environment]
  HUGO_VERSION = "0.29"
  HUGO_ENV = "production"
# you can lock a version of hugo for a deploy preview
[context.deploy-preview.environment]
  HUGO_VERSION = "0.29"
  HUGO_ENV = "deploy" # TEST: should be deploy or something other than production
# you can lock a version of hugo for a branch-deploy (other than previews)
[context.branch-deploy.environment]
  HUGO_VERSION = "0.30"
  HUGO_ENV = "development"

还针对特定分支(例如:new-branch)

# build a preview of the site (Drafts and Future dates also)
[context.new-branch]
  command = "yarn build:preview"

# you can also target a specific branch
[context.new-branch.environment]
  HUGO_VERSION = "0.29"
  HUGO_ENV = "deploy" # TEST: should be deploy or something other than production

解决方案:现在将有一个名为的环境变量HUGO_ENV,它具有一个值来了解定义的上下文(生产、开发、部署)。构建语言现在可以访问这些变量来决定构建结果中包含的内容。

笔记:

  • 使用您需要的任何环境变量名称和值。该示例以 Hugo 静态站点生成器为目标,该生成器具有getenv检索值的功能。
  • 我还没有测试 using 如何context.branch-deploy影响针对自定义分支,所以要小心覆盖这些上下文。
  • netlify.toml覆盖在 Netlify 站点上的浏览器控制台中输入的环境变量中指定的任何变量。
于 2018-04-08T18:05:28.983 回答