如何使用各种脚本命令(在 package.json 中)更改 dotenv 中的路径,例如:start、test 等

how to change the path in dotenv with various script commands (in package.json) such as : start , test , etc

好吧,我的问题是当我想在 package.json 中切换我的脚本命令时,例如从“开始”到“测试”,以便 运行 我的 Jest 测试其命令如下:

"scripts": {
  "start": "nodemon express/***",
  "serve": "node express/***",
  "dev": "node express/***",
  "test": "jest --watch"
},

我在我的项目中这样调用 dotenv

require("dotenv").config({
path: "express/config/.env",
});
  

上面的代码,帮助我使用我的环境文件,比如 .env 但问题是,当我想测试我的项目时,我想将我的脚本命令(在 package.json 中)从“开始”切换到“测试”,并将 dotenv 环境的主要路径更改为 test.env

您可以像这样将环境类型作为环境变量传递到您的程序中。注意:如果您需要多平台支持,则需要使用 cross-env

Unix 版本:

"scripts": {
  "start": "NODE_ENV=production nodemon express/***",
  "serve": "NODE_ENV=production node express/***",
  "dev": "NODE_ENV=dev node express/***",
  "test": "NODE_ENV=test jest --watch"
}

cross-env版本:

"scripts": {
  "start": "cross-env NODE_ENV=production nodemon express/***",
  "serve": "cross-env NODE_ENV=production node express/***",
  "dev": "cross-env NODE_ENV=dev node express/***",
  "test": "cross-env NODE_ENV=test jest --watch"
}

然后使用 process.env.NODE_ENV

的正常方法访问它们
const envVariablePaths = {
  "production": "/path/here",
  "dev": "path/here",
  "test": "path/here",
}
require("dotenv").config({
  path: envVariablePaths[process.env.NODE_ENV],
})

可以找到更多文档here