我一直在开发一些 Node 应用程序,并且一直在寻找一种存储与部署相关的设置的良好模式。在 Django 世界(我来自哪里),通常的做法是有一个包含标准设置(时区等)的 settings.py
文件,然后是一个 local_settings.py
用于部署特定设置,即。与什么数据库通信,什么 memcache 套接字,管理员的电子邮件地址等等。
我一直在寻找类似的 Node.js 模式。只是一个配置文件会很好,所以它不必与 app.js
中的所有其他内容混在一起,但我发现有一种方法可以在文件中包含特定于服务器的配置很重要这不在源代码管理中。同一个应用程序很可能部署在具有截然不同设置的不同服务器上,并且必须处理合并冲突,而这一切都不是我认为有趣的事情。
那么是否有某种框架/工具可以解决这个问题,或者每个人都只是自己拼凑一些东西?
最佳答案
我为我的包使用 package.json
,为我的配置使用 config.js
,如下所示:
var config = {};
config.twitter = {};
config.redis = {};
config.web = {};
config.default_stuff = ['red','green','blue','apple','yellow','orange','politics'];
config.twitter.user_name = process.env.TWITTER_USER || 'username';
config.twitter.password= process.env.TWITTER_PASSWORD || 'password';
config.redis.uri = process.env.DUOSTACK_DB_REDIS;
config.redis.host = 'hostname';
config.redis.port = 6379;
config.web.port = process.env.WEB_PORT || 9980;
module.exports = config;
我从我的项目中加载配置:
var config = require('./config');
然后我可以从 config.db_host
、config.db_port
等访问我的东西...这让我可以使用硬编码参数或存储在环境中的参数如果我不想将密码存储在源代码管理中,请使用变量。
我还生成了一个 package.json
并插入了一个依赖项部分:
"dependencies": {
"cradle": "0.5.5",
"jade": "0.10.4",
"redis": "0.5.11",
"socket.io": "0.6.16",
"twitter-node": "0.0.2",
"express": "2.2.0"
}
当我将项目克隆到本地机器时,我运行 npm install
来安装包。更多信息 here .
项目存储在 GitHub 中,并为我的生产服务器添加了 Remote 。
关于node.js - 如何存储 Node.js 部署设置/配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5869216/