2

すべての変数が設定された config.js があります。

config.global.js を作成し、config.production.js でそれらのいくつかをオーバーライドし、config.development.js でそれらのいくつかをオーバーライドしたいと考えています。

config.development.js の例を次に示します。

var config = {};    

config.env = 'development';
config.hostname = 'example.dev';
config.appname = 'Example.com';
config.site_url = 'http://example.dev:8080';

module.exports = config;

config.development.js(およびconfig.production.js)でこれを実行してオーバーライドできると考えています:

var config = require('config.global.js');

config.env = 'development';
config.hostname = 'example.dev';
config.appname = 'Example.com';
config.site_url = 'http://example.dev:8080';

module.exports = config;

そして、app.js では、次のようにできます。

var cfg = require('config.' + ( process.ENV.APP_ENV || 'development' ) + '.js');
app.set('domain', cfg.hostname);

アプリケーション構成変数を定義する他の方法は何ですか?

4

2 に答える 2

3

すべての環境の設定を含む 1 つの JSON ファイルを使用してみませんか。より多くの環境を導入すると、アプローチが適切に拡張されない場合があります。NODE_ENV プロパティを検索し、それを使用して環境からプロパティのセットを選択することで、正しいプロパティのセットを取得できます。

以前、開発/本番環境向けの Node.js アプリのブートストラップでブログを書きました。具体的には、「テスト中の本番環境のシミュレート」を読んで、その方法の例を確認してください。

于 2012-10-05T19:11:41.533 に答える
2

himanshu のアドバイスに従い、単一の構成ファイルを使用する場合は、プロトタイプの継承を使用して重複を回避できます。

var config = {};    

config.base = {};
config.base.env = 'development';
config.base.hostname = 'example.dev';
config.base.appname = 'Example.com';
config.base.site_url = 'http://example.dev:8080';

config.development = Object.create(config.base);
config.development.debugLevel = 'high';
...

config.production = Object.create(config.base);
config.production.debugLevel = 'low';
...

module.exports = config;

Object.create()指定されたプロトタイプで新しい空のオブジェクトを作成する ES5 関数です。

于 2012-10-06T02:18:51.463 に答える