我一直在开发一些 node 应用程序,我一直在寻找存储部署相关设置的良好模式.在Django世界(我来自那里),常见的做法是有一个包含标准设置(时区等)的settings.py文件,然后是一个local_settings.py文件,用于特定于部署的设置,即与哪个数据库对话、哪个memcache套接字、管理员的邮箱地址等等.

我一直在寻找类似的 node 模式.只需要一个配置文件就好了,这样它就不必与app.js中的所有其他文件混在一起,但我发现有一种方法可以在一个不在源代码管理中的文件中进行特定于服务器的配置,这一点很重要.同一个应用程序很可能部署在不同的服务器上,具有完全不同的设置,并且必须处理合并冲突,所有这些都不是我想要的乐趣.

那么,是否有某种框架/工具可以实现这一点,或者每个人都只是自己动手做一些事情?

推荐答案

很久以后,我发现了一个非常好的 node .用于管理配置的js模块:nconf.

一个简单的例子:

var nconf = require('nconf');

// First consider commandline arguments and environment variables, respectively.
nconf.argv().env();

// Then load configuration from a designated file.
nconf.file({ file: 'config.json' });

// Provide default values for settings not provided above.
nconf.defaults({
    'http': {
        'port': 1337
    }
});

// Once this is in place, you can just use nconf.get to get your settings.
// So this would configure `myApp` to listen on port 1337 if the port
// has not been overridden by any of the three configuration inputs
// mentioned above.
myApp.listen(nconf.get('http:port'));

它还支持将设置存储在Redis中,编写配置文件,并且有一个相当可靠的API,还得到了一个更受尊敬的 node 的支持.js shops,Nodejitsu,作为Flatiron框架计划的一部分,所以它应该是future 的证明.

看看nconf at Github.

Node.js相关问答推荐

Google Drive API返回200(HTTP成功)用于测试pdf输出,但没有文件

在渲染上部署Node.js服务器时出错:MODULE_NOT_FOUND

Express 4.18正文解析

Mongoose-如何从父文档填充到子文档

如何在Firebase Cloud Function v2计划函数中设置代码中的时区?

(0,core_1.default)不是使用@middy/core的lambda处理程序上的函数

Node.js分页返回空数组

在构建完成后,将AddedFiles文件夹的内容复制到dist文件夹

使用pm2启动服务器

错误:0308010C:try 通过 Github 推送部署到 firebase 托管时出现数字

在 nodejs 中使用 multer 上传文件返回未定义的 req.file 和空的 req.body

如何从动态Typescript 文件加载模块

Node.js |如何在微服务之间转发标头?

为什么我的react 表单不能正常工作?

如何更新 MongoDB 中对象数组中的键?

如何在 cypress 测试中进行计算

无法更新MongoDB中的文档:";伯森场';writeConcern.w';是错误的类型';数组'&引用;

使用 Webpack 和 font-face 加载字体

使用 node 的内置调试器判断变量?

如何从 find 方法返回 Mongoose 结果?