概要
LoopBackアプリケーションには、以下の設定ファイルが存在します。
- アプリケーション全体設定ファイルは、既定では
server/config.jsonです。 単純なJSONで表現できない値が必要な時は、server/config.local.jsを使うこともできます。 - データソース設定ファイルは、既定では
server/datasources.jsonです。 単純なJSONで表現できない値が必要な時は、server/datasources.local.jsを使うこともできます。 - モデルに関するアプリケーションレベルの設定は、既定では
server/model-config.jsonです。 - ミドルウェア設定ファイルは、既定では
server/middleware.jsonです。 - LoopBackコンポーネントの設定ファイルは、既定では
server/component-config.jsonです。
Note:
*.js ファイルを使った LoopBack アプリケーションの設定は、オリジナルの
.json ファイルが正しい位置にある場合のみ、動作します。.json ファイルを .jsファイルで置き換えるには、
.jsonファイルの設定値を .js ファイルで上書きしてください。 つまり、既定の .json ファイルが空でも、
全ての設定が .js ファイルで行えることを意味します。
LoopBack は、以下の設定ファイルが存在している場合、常にこれらを読み込みます。
server/config.json.server/config.local.jsonまたはserver/config.local.js.server/datasources.jsonserver/datasources.local.jsonまたはserver/datasources.local.jsserver/model-config.jsonserver/model-config.local.jsonまたはserver/model-config.local.jsserver/middleware.jsonserver/middleware.local.jsonまたはserver/middleware.local.jsserver/component-config.jsonserver/component-config.local.jsonまたはserver/component-config.local.js
さらに、NODE_ENV環境変数がセットされている場合、LoopBackは以下の設定を読み込もうとします。
server/config.env.json/jsserver/datasources.env.json/jsserver/model-config.env.json/jsserver/middleware.env.json/jsserver/component-config.env.json/js
env には、NODE_ENVの値(典型的なものは “development”・”staging”・”production”など)が入ります。
これを利用することで、開発・テスト・本番環境別の設定が可能になります。
Note:
LoopBackアプリケーションは複数の設定ファイルを読み込めるため、潜在的にそれらが衝突する可能性があります。 最も優先度の高いファイルでの設定値が常に有効となります。優先度は以下のとおりです。
- NODE_ENVの値による 環境別の設定。例えば
server/config.staging.jsonなどです。 - ローカル設定ファイル。 例えば
server/config.local.jsonなどです。 - 既定の設定ファイル。例えば
server/config.jsonなどです。
アプリケーション設定ファイルの例:
データソース設定ファイルの例:
ミドルウェア設定ファイルの例:
サンプルアプリケーションは、 https://github.com/strongloop/loopback-example-full-stack/tree/master/server を参照してください。
Important:
環境別の設定ファイルがある場合でも、LoopBackでは、既定のベースファイルが必要です。空のオブジェクトが書かれたJSONファイルで十分です。
アプリケーション全体の設定
アプリケーションのサーバサイド設定は server/config.json で定義します。
config.json でセットされた値は、以下のもので上書きできます。
config.local.jsまたはconfig.local.jsonconfig.env.jsまたはconfig.env.json,envの場所には、NODE_ENVの値(典型的なものはdevelopmentやproduction)が入ります。 例えばconfig.production.jsonです。
Important: 追加のファイルが上書きできるのは、最上位レベルの値型(文字列・数値)のキーのみです。入れ子になったオブジェクトや配列はサポートされていません。
例えば
config.production.js
module.exports = {
host: process.env.CUSTOM_HOST,
port: process.env.CUSTOM_PORT
};
スタックトレースが出力されないようにする
既定では、スタックトレースはJSONレスポンスには返されませんが、開発中やデバッグ中はそれを有効にし、本番ではオフにしたいということがあります。
- NODE_ENV 環境変数を “production” にセットします。
- 以下の記述を
server/middleware.production.jsonに追加します。
server/middleware.production.json
"final:after": {
"strong-error-handler": {}
}
Note:
アプリケーション生成ツール は上記の設定を持つ middleware.developmnet.json ファイルを作成します。
NODE_ENV環境変数が development でないことを確認すればOKです。
API Explorerを無効化する
LoopBack API Explorer は、アプリケーションの開発中には非常に便利ですが、 本番環境ではセキュリティ上の理由から公開したくないと思うかもしれません。
loopback-component-explorerを使っているアプリケーションで、本番環境でexplorerを無効化するには以下のようにします。
- NODE_ENV 環境変数を “production” にセットします。
server/component-config.production.jsonにて、以下のように設定します。
server/component-config.production.json
{
"loopback-component-explorer": null
}
HTTPレスポンスにスタックトレースを含める
既定では、LoopBack 3.0アプリケーションは、HTTPレスポンスにスタックトレースを含めません(本番環境で一般的)。開発やデバッグ用に、それらを含めたい場合、NODE_ENV 環境変数の値を development にしてください。すると、アプリケーションは、middleware.development.json を使うようになります。
このファイルは、以下のような設定を含んでおり、HTTPレスポンスにスタックトレースが含まれるようになります。
{
"final:after": {
"strong-error-handler": {
"params": {
"debug": true,
"log": true
}
}
}
}
データソース設定
You can override values set in datasources.json in the following files:
datasources.local.jsordatasources.local.jsondatasources.env.jsordatasources.env.json, whereenvis the value ofNODE_ENVenvironment variable (typicallydevelopmentorproduction). For example,datasources.production.json.
Example data sources:
datasources.json
{
db: {
connector: 'memory'
}
}
datasources.production.json
{
db: {
connector: 'mongodb',
database: 'myapp',
user: 'myapp',
password: 'secret'
}
}
You can also configure your datasource.env.js file to use environment variables:
datasources.production.js
module.exports = {
db: {
connector: 'mongodb',
hostname: process.env.DB_HOST,
port: process.env.DB_PORT || 27017,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: 'myapp',
}
In the above example, running export PRODUCTION=true (or set PRODUCTION=true for Windows) will load
the datasource.
Getting values from environment variables
You can easily get the value of an environment variable in an application. The command you use depends on your operating system.
MacOS and Linux
Use this command to set an environment variable and run an application in one command:
$ MY_CUSTOM_VAR="some value" node .
or in separate commands:
$ export MY_CUSTOM_VAR="some value"
$ node .
Then this variable is available to your application as process.env.MY_CUSTOM_VAR.
Windows
On Windows systems, use these commands:
C:\> set MY_CUSTOM_VAR="some value"
C:\> node .