有谁知道在sails中处理prod/dev/test配置切换的最好方法吗?我真的很喜欢actionhero.js根据NODE_ENV的内容自动加载配置/环境/{env}.js的方式,但我没有看到在sails中做类似事情的内置方法。我注意到sails将在服务器引导期间加载config/中的任何文件,所以我现在的解决方案是设置以下内容:
config/
|-- local.js
|-- environment/
|---- production.js
|---- staging.js
|---- development.js
|---- testing.js然后在每个{env}.js文件中,我只需像这样扩展配置:
if (process.env.NODE_ENV === 'production') {
// Enter any environment specific config changes
config.db = {
db_host: foo,
db_port: bar
}
config.otherThing = {
somevar: 'someval'
}发布于 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环境
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'
};发布于 2014-02-15 08:12:09
我通过使config/local.js需要依赖于process.env.NODE_ENV的额外配置文件来做到这一点。
config/local.js中的
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**:**中的
# config.local.js
config/environments这会给你:
通过在保存所有特定于环境的配置的config/environments/{env}.js
sails.config{env}中定义配置,env的任何配置,就像您的解决方案执行{env} files{env}文件一样
https://stackoverflow.com/questions/21790465
复制相似问题