为开发和生产环境提供一些配置文件分离的示例

为开发和生产环境提供一些配置文件分离的示例

配置文件用于存储我们应用程序的URL、与环境相关的凭证等。为了访问配置文件,最好安装 https://www.npmjs.com/package/dotenv npm包,并将其放置在应用程序启动的根文件中。这用于检测是否传递了任何.env值。

通常,所有的配置文件都存储在.env变量中,为每个环境单独设置和处理这些变量有点棘手。

相反,我们可以根据下面的文件夹结构仅拥有一个config.json文件。

为开发和生产环境提供一些配置文件分离的示例

config.json:

我们可以按照以下方式使用config.json文件。

const _ = require('lodash'); 
const config = require('./key/config.json'); 
  
let finalConfig = {}; 
  
const environment = { 
  config_id: process.env.NODE_ENV || 'local', 
}; 
  
const defaultConfig = config.default; 
const environmentConfig = config[environment.config_id]; 
finalConfig = _.merge(defaultConfig, environmentConfig); 
  
global.gConfig = finalConfig;

在上面的示例中,为了合并配置项,使用了一个名为 “dash” 的 npm 实用程序包。根据上面的示例,我们只需要在 .env 文件中设置 NODE_ENV。

config.json: 我们的 config.json 文件如下所示。

{ 
  "local": { 
    "config_id": "local", 
    "node_port": 3000, 
    "database_connection_string": "mongodb://localhost:27017", 
    "redis_port": 6379, 
    "redis_connection_host": "localhost", 
    "JWT_PUBLIC_KEY": "./auth/key/access_key/jwt_rs256.key.pem", 
    "cross_service_url": "http://localhost:8001/cross_service" 
  }, 
  "dev": { 
    "config_id": "dev", 
    "node_port": 3000, 
    "database_connection_string": "mongodb://22.34.54.21:27017", 
    "redis_port": 6379, 
    "redis_connection_host": "22.34.54.11", 
    "JWT_PUBLIC_KEY": "./auth/key/access_key/jwt_rs256.key.pem", 
    "cross_service_url": "http://1.108.151.123:8001/cross_service" 
  }, 
  "prod": { 
    "config_id": "prod", 
    "node_port": 3000, 
    "database_connection_string": "mongodb://3.44.56.67:27017", 
    "redis_port": 6379, 
    "redis_connection_host": "13.34.36.67", 
    "JWT_PUBLIC_KEY": "./auth/key/access_key/jwt_rs256.key.pem", 
    "cross_service_url": "http://6.238.341.125:8001/cross_service" 
  } 
}

仅通过传递NODE_ENV(例如local,dev或prod),我们就能够通过全局配置访问相应的环境变量,如下面的示例所示,用于访问redis主机,通过在.env文件中设置NODE_ENV为local

为开发和生产环境提供一些配置文件分离的示例

const REDIS_HOST = global.gConfig.redis_connection_host; 
  
console.log(REDIS_HOST) 
  
// localhost

请确保在 .gitignore 文件中放置 config 文件夹和 .env 文件,并根据环境在 .env 中指定相应的值,config.json 的值将根据 .env 中的值进行映射。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程