代码之家  ›  专栏  ›  技术社区  ›  Jed Richards

如何在netlify.toml配置中插入环境变量

  •  4
  • Jed Richards  · 技术社区  · 6 年前

    我想根据环境的不同代理到不同的API—我已经尝试了以下主题的一些变体,但没有成功。如果可能的话,正确的方法是什么?

    [build.environment]
      API_URI="https://dev-api.foo.com/:splat"
    
    [context.production.environment]
      API_URI="https://prod-api.foo.com/:splat"
    
    [[redirects]]
      from = "/api/*"
      to = "$API_URI"
      status = 200
      force = true
    

    这不起作用。

    尽管当我将uri硬编码到 to 字段,当我尝试插入一个env变量时它就失败了。

    3 回复  |  直到 6 年前
        1
  •  5
  •   oligopol    6 年前

    它不受支持,但Netlify建议在他们的文档中找到解决方法( https://www.netlify.com/docs/netlify-toml-reference ):

    将环境变量直接用作 不支持netlify.toml文件。但是,以下工作流 可用于替换基于环境变量的值 文件,假设您只想更改标题或重定向。这个 文件的其余部分在生成之前被读取,但是这些部分是 在生成过程之后读取。

    1. 添加一个类似于 netlify.toml重定向或标题中的api_key_占位符 部分。
    2. 创建生成环境变量,例如api_key, 以所需的值。您可以在ToMl文件中或在我们的UI中实现这一点。 在配置的“生成和部署设置”部分中。你 可能使用后者将敏感值保留在存储库之外。
    3. 在构建命令中添加这样的命令:sed-i s/api_key_placeholder/$api_key/g netlify.toml&normal build命令。
        2
  •  0
  •   Jed Richards    6 年前

    回答我自己的问题-这是不支持的,您必须手动插入env vars作为netlify构建的一部分。

        3
  •  0
  •   Gijo Varghese    6 年前

    对。有可能。以下是详细的文档: https://www.netlify.com/docs/continuous-deployment/#deploy-contexts

    在我的情况下,我需要设置一个 REACT_APP_API_URL 分开生产和所有其他分支机构。我用的是:

    [context.production.environment]
      REACT_APP_API_URL = "https://api.test.im"
    
    [context.deploy-preview.environment]
      REACT_APP_API_URL = "https://api-staging.test.im"
    
    [context.branch-deploy.environment]
      REACT_APP_API_URL = "https://api-staging.test.im"