首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sails.js中处理生产/开发/测试配置

在sails.js中处理生产/开发/测试配置
EN

Stack Overflow用户
提问于 2014-02-15 06:14:29
回答 2查看 12.1K关注 0票数 10

有谁知道在sails中处理prod/dev/test配置切换的最好方法吗?我真的很喜欢actionhero.js根据NODE_ENV的内容自动加载配置/环境/{env}.js的方式,但我没有看到在sails中做类似事情的内置方法。我注意到sails将在服务器引导期间加载config/中的任何文件,所以我现在的解决方案是设置以下内容:

代码语言:javascript
复制
config/
|-- local.js
|-- environment/
|---- production.js
|---- staging.js
|---- development.js
|---- testing.js

然后在每个{env}.js文件中,我只需像这样扩展配置:

代码语言:javascript
复制
if (process.env.NODE_ENV === 'production') {
  // Enter any environment specific config changes
  config.db = {
    db_host: foo,
    db_port: bar
  }
  config.otherThing = {
    somevar: 'someval'
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-24 19:33:06

自从Sails0.10-rc6以来,这一点得到了改进,现在你可以在config中添加一个env子文件夹来更改不同环境的设置。

因此,您只需添加一个/config/env/development.js/config/env/production.js文件,即可覆盖所有必要的设置

有关更多详细信息,请参阅https://github.com/balderdashy/sails/pull/1638

更改端口和数据库适配器的示例,例如,用于production.js中的production环境

代码语言:javascript
复制
module.exports = {
  port: 80
};

module.exports.models = {

  // Your app's default connection.
  // i.e. the name of one of your app's connections (see `config/connections.js`)
  //
  // (defaults to localDiskDb)
  connection: 'someMongodbServer'
};
票数 15
EN

Stack Overflow用户

发布于 2014-02-15 08:12:09

我通过使config/local.js需要依赖于process.env.NODE_ENV的额外配置文件来做到这一点。

config/local.js中的

代码语言:javascript
复制
var fs = require('fs'),
   lodash = require('lodash');

// config.local.js
module.exports = (function () {
  var defaults = {
    env: process.env.NODE_ENV || 'development',
    port: process.env.PORT || 1337,
    config: {
      paths: {
        environments: __dirname + '/environments'
      }
    }
  };

  var envConfigPath = defaults.config.paths.environments + '/' + defaults.env + '.js';
  var environment = {};

  if (fs.existsSync(envConfigPath)) {
    var environment = require(envConfigPath);
    logger.info('Loaded environment config for ' + defaults.env + '.');
  } else {
    logger.warn('Environment config for ' + defaults.env +' not found.');
  }
  return _.merge(defaults, environment);
}());

.gitignore**:**中的

代码语言:javascript
复制
# config.local.js
config/environments

这会给你:

通过在保存所有特定于环境的配置的config/environments/{env}.js

  • sails.config{env}中定义配置,
  • 将覆盖基于env的任何配置,就像您的解决方案执行
  • 不错的声明性{env} files
  • Warnings关于丢失{env}文件

一样

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21790465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档