在使用Node.js进行开发时我们会将敏感的信息分为生产环境和开发环境进行文件形式的保存,那么如何设置环境变量成为了 一个问题。
在项目启动时我们可以使用cross-env插件进行设置,在项目启动时设置生产环境或者开发环境,例如:
代码语言:javascript复制 "scripts": {
"dev:init": "node ./bin/dev",
"dev": "cross-env ENV=development nodemon --watch ./dist ./dist/src/index.js",
"build": "node ./bin/build",
"start": "cross-env ENV=production nodemon ./src/index.js"
}
Copy
JSON
使用cross-env将process.env.ENV设置为development或者production,这样在项目启动后我们可以在入口文件中动态选择读取生产环境或者开发环境的文件。
在入口文件我们需要安装dotenv插件进行处理,最好是尽早引入,这样在后面的文件中可以通过process.env进行变量的使用。
代码语言:javascript复制//环境变量
import dotenv from "dotenv";
import path from "path";
dotenv.config({
path: path.join(__dirname, `../.env.${process.env.ENV}`), // 配置文件路径
encoding: "utf8", // 编码方式,默认utf8
debug: false, // 是否开启debug,默认false
}).parsed;
Copy
TypeScript
例如,生产环境的数据库信息和开发环境的数据库信息分开保存
代码语言:javascript复制import { Sequelize } from "sequelize";
const sequelize = new Sequelize(
"blog",
process.env.DB_MYSQL_USER "",
process.env.DB_MYSQL_PASSWORD,
{
host: process.env.DB_MYSQL_HOST "",
dialect: "mysql",
port: process.env.DB_MYSQL_PORT ? (process.env.DB_MYSQL_PORT as string) : 3306,
timezone: " 08:00",
pool: {
max: 5,
min: 0,
idle: 1000,
},
dialectOptions: {
dateStrings: true,
typeCast: true,
},
}
);
export default sequelize;
Copy
TypeScript
文件结构这样设置即可
最后:不要忘了将生产环境的存储文件填写在.gitignore里面!!!