如何存储Node.js部署设置/配置文件?

早过忘川 提交于 2020-01-06 16:38:49

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

我一直在研究一些Node应用程序,我一直在寻找一种存储与部署相关的设置的良好模式。 在Django世界(我来自哪里),常见的做法是使用包含标准设置(时区等)的settings.py文件,然后使用local_settings.py进行部署特定设置,即。 什么数据库交谈,什么memcache套接字,管理员的电子邮件地址等。

我一直在寻找类似Node的模式。 只是一个配置文件会很好,所以它不必与app.js其他所有内容一起使用,但我发现在一个不在源代码管理中的文件中有一种特定于服务器的配置很重要。 相同的应用程序可以在不同的服务器上部署,具有完全不同的设置,并且必须处理合并冲突以及所有这些不是我的乐趣。

那么是否有某种框架/工具,或者每个人都自己一起破解某些东西?


#1楼

您还可以查看node-config ,它根据$ HOST$ NODE_ENV变量(有点像RoR)加载配置文件: 文档

这对于不同的部署设置( developmenttestproduction )非常有用。


#2楼

我的解决方案很简单:

在./config/index.js中加载环境配置

var env = process.env.NODE_ENV || 'development'
  , cfg = require('./config.'+env);

module.exports = cfg;

在./config/config.global.js中定义一些默认值

var config = module.exports = {};

config.env = 'development';
config.hostname = 'dev.example.com';

//mongo database
config.mongo = {};
config.mongo.uri = process.env.MONGO_URI || 'localhost';
config.mongo.db = 'example_dev';

覆盖./config/config.test.js中的默认值

var config = require('./config.global');

config.env = 'test';
config.hostname = 'test.example';
config.mongo.db = 'example_test';

module.exports = config;

在./models/user.js中使用它:

var mongoose = require('mongoose')
, cfg = require('../config')
, db = mongoose.createConnection(cfg.mongo.uri, cfg.mongo.db);

在测试环境中运行您的应用:

NODE_ENV=test node ./app.js

这里有更详细的解释: http//www.chovy.com/node-js/managing-config-variables-inside-a-node-js-application/


#3楼

只需用exports一个简单的settings.js

exports.my_password = 'value'

然后,在您的脚本中,执行require

var settings = require('./settings.js');

您现在的所有设置都将通过settings变量提供:

settings.my_password // 'value'

#4楼

从Node v0.5.x开始,您可以要求JSON文件( 引用此答案

config.json:

{
    "username" : "root",
    "password" : "foot"
}

app.js:

var config = require('./config.json');
log_in(config.username, config.password);

#5楼

除了nconf中模块中提到的这个答案 ,和节点配置中提到的这个答案 ,也有节点iniparserIniReader ,这似乎是简单的.ini配置文件分析器。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!