现在是 2019 年底,我仍然面临 nodeJs 和 azure devops 中 env 变量的问题。
我没有找到解决方案,但我使用了一种解决方法。我使用伪“env var”。
我创建的"env.json"
文件与".env"
项目根目录中的文件具有相同的结构。将此文件放入".gitignore"
文件。将此文件明确导入到我需要使用 env var 的文件中。将其用作常规对象,而不是 process.env.***
例子:
我们有“.env”,我们需要替换它:
REACT_APP_SOMW_KEY=KEY
项目本身的下一步是:
创建"env.json"
:
{"REACT_APP_SOMW_KEY":"KEY"}
将其添加到".gitignore"
.
如果使用typescript,请将下一个设置添加到tsconfig.json
:
"resolveJsonModule": true,
在文件process.env.REACT_APP_SOMW_KEY
所在的变化process.env.REACT_APP_SOMW_KEY
,以config.REACT_APP_SOMW_KEY
和ADDconst config = require("../pathTo/env.json")
作为begginning一个导入module。
在typescript的情况下,你也可以创建界面来自动完成:
export interface IEnvConfig{
REACT_APP_SOMW_KEY?: string;
}
const config: IEnvConfig = require("../pathTo/env.json");
结果将是这样的:
const reactSomeKey = /*process.env.REACT_APP_SOMW_KEY*/ config.REACT_APP_SOMW_KEY;
后续步骤Azure DevOps
:
将您的密钥添加到 azure"key vault"
或"variables"
.
在构建项目的步骤之前的 CI 管道中,您可以设置PowerShell
任务,这将创建"env.json"
文件。与我们应该在本地创建“.env”文件相同,因为我们使用隐藏".env"
文件制作了 git clone 。我把 yml 任务放在这里(最后你可以看到 2 个调试命令,以确保该文件已创建并存在于项目中):
- powershell: |
New-Item -Path $(System.DefaultWorkingDirectory) -Name "env.json" -Force -Value @'
{
"REACT_APP_SOMW_KEY": "$(REACT_APP_SOMW_KEY)",
}
'@
Get-Content -Path $(System.DefaultWorkingDirectory)\env.json
Get-ChildItem -Path $(System.DefaultWorkingDirectory)
displayName: 'Create "env.json" file'
结果:您使用 json 对象键的流程与您通常使用的".env"
. 您也可以在项目中同时拥有".env"
和"env.json"
。