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

标签 node.js configuration-files

我一直在开发一些 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_hostconfig.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/

相关文章:

java - 将带有配置文件的应用程序分发给其他用户

apache-spark - 运行时的 Spark 配置更改

Symfony2 JMSSerializerBundle 在 YML 中公开属性

javascript - 如何将 OpenLayers 与 react-starter-kit 一起使用?

node.js - 我应该如何构建我的 Node/express/mongodb 应用程序?

javascript - 实习生单元测试 : loading modules that need browser context

node.js - 在node.js中使用body-parser时,如何在不区分大小写模式下获取键值?

node.js - 匹配所有不以下划线开头的文件并忽略以下划线开头的目录中的文件的 glob 模式是什么?

python - 在 setup.py build 中包含项目根目录中的 python 文件

c - 使用 libconfig 读取 C 中的配置文件