使用Node.js来切换开发/生产环境的配置
自我介绍
有很多情况下,我们希望在Node.js中切换本地开发环境和生产环境的配置。这里我将分享我的最佳实践方法。
改变前
<用于开发环境的>
export const config = {
mail : {
host: 'mailhog',
port: 1025,
}
}
<舞台排练用> (For staging rehearsals)
export const config = {
mail : {
host: 'postfix',
port: 25,
auth: {
user: 'user',
pass: '12345678'
}
}
}
<用于正式环境>
export const config = {
mail : {
host: 'postfix',
port: 25,
auth: {
user: 'user',
pass: '12345678'
}
}
}
文件的来源导入 (请注意,这是在假定使用构建工具的前提下所写的,如果要直接写出来的话,应该使用 require,而不是 import 的语法。)
import { config } from './config.dev.js' // ここを切り替えたい
console.log(config.mail);
// ...
切换功能的内置
使用dotenv模块
可以使用dotenv模块来读取放置在根目录的.env文件的值,并将其分配给process.env。所以我们将使用这个模块。
使用 npm 安装 dotenv。
# npm i dotenv
只需在项目根目录下放置.env文件,并设置用于切换的变量。
# 開発環境は↓を記載
TARGET_ENV = development
# ステージング環境は↓を記載
TARGET_ENV = staging
# 公開環境は↓を記載
TARGET_ENV = production
请配置config.js。
import dotenv from 'dotenv'
dotenv.config(); // .envをprocess.envに割当て
const setConfig = {
// 公開用
production : {
mail : {
host: 'postfix',
port: 25,
auth: {
user: 'user',
pass: '12345678'
}
}
},
// ステージング用
staging: {
mail : {
host: 'postfix',
port: 25,
auth: {
user: 'user',
pass: '12345678'
}
}
},
// 開発用
development : {
mail : {
host: 'mailhog',
port: 1025,
}
}
}
export const config = setConfig[process.env.TARGET_ENV];
在config.js文件中使用dotenv进行分配,并按照process.env.TARGET_ENV的值进行切换。
app.js → 应用程序.js .js)
// import { config } from './config.dev.js'
// ↓
import { config } from './config.js'
console.log(config.mail);
// ...
config.js中会根据环境自动切换,因此config文件将保持一个。