hsz*_*hsz 4 environment-variables node.js npm
假设我们有一个.env指定了一些变量的文件:
AWS_PROFILE=hsz
ENVIRONMENT=development
Run Code Online (Sandbox Code Playgroud)
还npm定义了一个简单的任务:
{
"name": "project",
"version": "0.0.1",
"scripts": {
"deploy": "sls deploy"
}
}
Run Code Online (Sandbox Code Playgroud)
但是跑步 npm run deploy忽略了我们的.env定义。
可以通过以下方式解决better-npm-run:
{
"name": "project",
"version": "0.0.2",
"scripts": {
"deploy": "bnr deploy"
},
"betterScripts": {
"deploy": "sls deploy"
},
"devDependencies": {
"better-npm-run": "^0.1.1",
}
}
Run Code Online (Sandbox Code Playgroud)
但这看起来像是开销——尤其是当我们有 10 多个任务时。
有没有更好的方法可以在.env不通过代理所有任务的情况下始终加载better-npm-run?
在执行 npm 脚本之前,您可以使用env-cmd npm package 设置从 .env 文件加载的环境变量。
npm i env-cmd -D
Run Code Online (Sandbox Code Playgroud)
{
"scripts": {
"deploy": "env-cmd sls deploy"
}
}
Run Code Online (Sandbox Code Playgroud)
有点难看,但你可以尝试这样的事情:
"scripts": {
"deploy": "export $(cat .env | xargs) && sls deploy"
}
Run Code Online (Sandbox Code Playgroud)
这将.env在运行之前从文件中导出所有环境变量sls deploy。
在这个答案中,这种技术有一些变化。
不是很干净,但它避免了使用额外的模块。