假设我们有一个.env
文件,其中指定了一些变量:
AWS_PROFILE=hsz
ENVIRONMENT=development
还定义了一个简单的npm
任务:
{
"name": "project",
"version": "0.0.1",
"scripts": {
"deploy": "sls deploy"
}
}
但是运行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",
}
}
但这看起来像是一个开销-尤其是当我们有10多个任务时。
有没有更好的方法总是加载.env
,而不通过better-npm-run
代理所有任务?
4条答案
按热度按时间mnemlml81#
有点丑,但你可以试试这样的:
这将在运行
sls deploy
之前从.env
文件中导出所有环境变量。在this answer中,此技术有一些变化。
不是很干净,但它避免了使用额外的模块。
alen0pnh2#
在执行npm脚本之前,可以使用env-cmd npm软件包设置从.env文件加载的环境变量。
1.将软件包添加到您的package.json devDependencies中:
1.在package.json中使用env-cmd程序作为npm脚本的前缀:
cnh2zyt33#
在项目本身中维护并加载所有环境特定配置。
dev.js
prod.js
config.js -将基于process.env.ENV变量解析配置主文件
index.js -每次项目启动时调用的节点项目根文件
package.json
运行node.js代码生产环境
ENV=prod npm run deploy
;开发环境-npm run deploy
;在
./config.js
中,默认环境设置为dev
使用这个简单的实践,您不需要任何npm模块来管理您的环境配置。
zaqlnxep4#
我在尝试使用外部命令同步数据库时遇到了同样的问题,并通过要求
dotenv
包(将加载变量)修复了该问题那么就调用
npm run db-sync