我一直在开发一些 Node 应用程序,并且一直在寻找一种存储与部署相关的设置的良好模式。在 Django 世界(我来自哪里)中,通常的做法是拥有一个settings.py包含标准设置(时区等)的文件,然后是一个local_settings.py用于部署特定设置的文件,即。与什么数据库交谈,什么 memcache 套接字,管理员的电子邮件地址等等。
settings.py
local_settings.py
我一直在为 Node.js 寻找类似的模式。只是一个配置文件会很好,所以它不必与 . 中的所有其他内容混在一起app.js,但我发现有一种方法可以在一个不在源代码控制中的文件中进行特定于服务器的配置是很重要的。同一个应用程序很可能部署在具有截然不同的设置的不同服务器上,并且必须处理合并冲突以及所有这些都不是我的有趣想法。
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 商店之一 Nodejitsu的支持,作为Flatiron框架计划的一部分,所以它应该是相当面向未来。
在 Github 上查看nconf。