使用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文件将保持一个。

广告
将在 10 秒后关闭
bannerAds