我一直在开发一些Node应用程序,并且一直在寻找一种存储与部署相关的设置的良好模式。在Django世界(我来自哪里)中,通常的做法是创建一个settings.py包含标准设置(时区等)的文件,然后包含一个local_settings.py用于部署特定设置的文件。与哪个数据库进行通信,什么Memcache套接字,管理员的电子邮件地址等等。
settings.py
local_settings.py
我一直在寻找Node的类似模式。只需一个配置文件就可以了,因此它不必与中的其他所有文件一起使用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,并且作为Flatiron框架计划的一部分,还得到了备受推崇的Node.js商店之一Nodejitsu的支持。相当适合未来。
在Github上查看nconf。