2017-09-11 12 views
0

私はノードjsの初心者です。私は別の環境、すなわちdev、prodなどのために異なった設定をしています。現在、私のアプリケーションパッケージを作成しています.jsonをconfig.jsonにコピーし、config.jsonを設定変数(グローバル)としてエクスポートし、アプリ全体で使用します。環境変数nodejsとしてconfig jsonをロードする方法

config = require(__dirname + '/config/config'); (config.httpProxy && config.httpProxy.enabled);

ように私は、代わりにアプリのconfig.jsonにそれをコピーする(DEVのdev.jsonのすべてのキーがアプリでグローバル変数としてエクスポートされているため)、環境変数の一部として特定のenv.jsonをロードしたいです同じアプリをさまざまな環境で使用できます。どうやってするか。

PS:アプリケーションパッケージサポートと依存関係管理のために私はgulpとnpmを使用します。

助けてください。

+1

各環境に変数を設定して、その環境変数を識別し、読み込むファイルを決定するのに役立ちます。そのような標準の1つは 'process.env.NODE_ENV'でアクセス可能な' NODE_ENV'を設定することです。 – Marty

+0

ありがとうマーティ。いくつかのコード例がありますか? – Lovey

+0

はい、上記の私のコメントの最後の部分を参照してください。 – Marty

答えて

0

あなたは、このようなあなたのファイルに名前を付けることができます。

config.development.json 
config.production.json 
config.test.json 

次にとしてファイルをロードします。

process.env.NODE_ENV値は、あなたが

に開発/生産/テストすることができ

config = require(__dirname + '/config/config.' + process.env.NODE_ENV); 

アプリケーションを開始する必要があります。

NODE_ENV=development node app.js 
これが機能するには

+0

何か不足しています。 – Marty

0

スクリプトからプロジェクトを実行している場合は、NODE_ENVをpackage.jsonファイルに設定します。

{ 
    ... 
    "scripts": { 
    "nodemon:server": "NODE_ENV=dev NODE_PATH=. nodemon --exec \"babel-node --stage 1\" server.js", 
    "prod:server": "NODE_ENV=prod NODE_PATH=. nodemon --exec \"babel-node --stage 1\" server.js" 

    }, 
    "author": "'Shubham Batra'", 
    "license": "MIT", 
    .... 
} 

"PROD:サーバ": "NODE_ENV = PROD NODE_PATH = nodemon --exec \" バベルノード--stage 1 \ "server.js" 設定での使用より

、 jsファイル

if (process.env.NODE_ENV === 'test') { 
    url = 'http://abc:3000'; 
    dbUrl= 'xyz'; 
    password = '***'; 

} else if (process.env.NODE_ENV === 'prod') { 
    url = 'http://def:3000'; 
    ... 
} 
export default { 

    conf: { 
    url, 
    dbUrl, 
    ... 
    } 
} 

はその後、あなたのプロジェクトと使用のconf

+0

HI Shubham、答えをありがとう。しかし、私は条件付きブロックを使用してconfigsをロードし、設定レベルでのみ何かを行うことを頼りにしています。全体的なアイデアは、最小限の/変更なしのアプリケーションを作成することで、同じアプリケーションを異なる環境でdiff環境にデプロイすることができます。 – Lovey

0

のどこにでも、この設定ファイルをインポートすることができ、私はあなたが、それはすべてあなたのenv設定ファイルを扱うconfigというこのモジュールを使用することをお勧め。 https://www.npmjs.com/package/config

ただ、configという名前でフォルダを作成し、そのようにファイルを作成:サーバの起動時に

は、他の人が述べたように、関連する環境を提供します。 次に、設定ファイルに記載されているプロパティーを使用できます。

+0

ありがとう、私は現在同じモデルを使用しています。しかし、私はアプリケーションの外にすべての設定を置く必要があります。 – Lovey

+0

memecachedまたはredisを使用したい場合は、これらのキーと値のペアを格納するためにすべての設定を保存することができます。そこからすべての設定にアクセスします。 この方法では、あなたのアプリケーションにあなたのredis/memcachedの接続の詳細だけを保持する必要があります。 パフォーマンスの問題については心配する必要はありません。これらは非常に高速であり、そのような重要な価値データのための信頼性の高いストアです。 – TGW

+0

はい、もう一度キャッシュ設定をアプリにフックする必要があります。私はアプリからconfigを完全に分離しようとしているので、同じアプリケーションが異なる設定を注入することでどこにでもデプロイできるようになります。 – Lovey

関連する問題