Sailsは、設定より規約という原則に忠実に従っていますが、便利なデフォルト設定をカスタマイズする方法を理解することは重要です。Sailsのほとんどすべての規約には、ニーズに合わせて調整または上書きできる設定オプションのセットが付属しています。
特定の設定をお探しですか?リファレンス > 設定にアクセスして、Sailsで利用可能なすべての設定オプションの完全なガイドをご覧ください。
Sailsアプリは、プログラムで設定したり、環境変数またはコマンドライン引数を指定したり、ローカルまたはグローバルの.sailsrcファイルを変更したり、または(最も一般的な方法として)新しいプロジェクトのconfig/フォルダーに慣例的に配置されているボイラープレート構成ファイルを使用したりできます。アプリで使用される、権威ある結合された構成は、実行時にsails.configとしてsailsグローバルで利用できます。
config/*)新しいSailsアプリでは、デフォルトで多数の設定ファイルが生成されます。これらのボイラープレートファイルには、ドキュメントとテキストエディター間を行き来することなく、すばやくその場で参照できるように設計された多数のインラインコメントが含まれています。
ほとんどの場合、sails.configオブジェクトのトップレベルキー(例:sails.config.views)は、アプリ内の特定の設定ファイル(例:config/views.js)に対応しています。ただし、設定はconfig/ディレクトリ内のファイル間で自由に配置できます。重要なのは、設定の名前(つまり、キー)であり、それがどこから来たかというファイルではありません。
たとえば、新しいファイルconfig/foo.jsを追加するとしましょう。
// config/foo.js
// The object below will be merged into `sails.config.blueprints`:
module.exports.blueprints = {
shortcuts: false
};
個々の設定オプションの詳細なリファレンス、およびデフォルトでそれらが存在するファイルについては、このセクションのリファレンスページを確認するか、より高レベルの概要については、Sailsアプリの構成の"config/"をご覧ください。
config/env/*)標準設定ファイルで指定された設定は、通常、すべての環境(開発、本番、テストなど)で利用可能です。特定の設定を特定の環境でのみ有効にしたい場合は、特別な環境固有のファイルとフォルダーを使用できます。
/config/env/<environment-name>フォルダーに保存されたファイルは、Sailsが<environment-name>環境で起動された場合のみロードされます。たとえば、config/env/productionに保存されたファイルは、Sailsが本番モードで起動された場合にのみロードされます。config/env/<environment-name>.jsとして保存されたファイルは、Sailsが<environment-name>環境で起動された場合のみロードされ、環境固有のサブフォルダーからロードされた設定の上にマージされます。たとえば、config/env/production.jsの設定は、config/env/productionフォルダー内のファイルの設定よりも優先されます。デフォルトでは、アプリは「開発」環境で実行されます。アプリの環境を変更する推奨される方法は、NODE_ENV環境変数を使用することです。
NODE_ENV=production node app.js
production環境は特別です。構成によっては、圧縮、キャッシュ、最小化などが有効になります。また、
config/local.jsを使用している場合、そのファイルでエクスポートされた構成は、環境固有の構成ファイルよりも優先されることに注意してください。
config/local.jsファイルconfig/local.jsファイルを使用して、ローカル環境(たとえば、ラップトップ)用のSailsアプリを構成できます。このファイルの設定は、.sailsrcを除く、他のすべての構成ファイルよりも優先されます。ローカルでのみ使用することを目的としているため、バージョン管理下に置くべきではありません(その理由で、デフォルトの.gitignoreファイルに含まれています)。local.jsを使用して、ローカルデータベースの設定を保存したり、コンピューターでアプリを起動するときに使用するポートを変更したりします。
詳細については、コンセプト > 設定 > local.jsファイルをご覧ください。
sails.configにアクセスするconfigオブジェクトは、Sailsアプリインスタンス(sails)で利用できます。デフォルトでは、これは起動中にグローバルスコープで公開されているため、アプリのどこからでも利用できます。
// This example checks that, if we are in production mode, csrf is enabled.
// It throws an error and crashes the app otherwise.
if (sails.config.environment === 'production' && !sails.config.security.csrf) {
throw new Error('STOP IMMEDIATELY ! CSRF should always be enabled in a production deployment!');
}
sails.configの値を直接設定する構成ファイルを使用するだけでなく、構成キーの名前の前にsails_を付け、ネストされたキーの名前を二重アンダースコア(__)で区切ることにより、Sailsを起動するときにコマンドラインで個々の構成値を設定できます。この方法でフォーマットされた環境変数は、JSONとして解析されます(可能な場合)。たとえば、コマンドラインで許可されたCORSオリジン(sails.config.security.cors.allowOrigins)を["http://somedomain.com","https://anotherdomain.com:1337"]に設定するには、次のようにします。
sails_security__cors__allowOrigins='["http://somedomain.com","https://anotherdomain.com:1337"]' sails console
JSONエンコードされた値内の文字列を示す二重引用符と、値をコンソールからSailsに正しく渡すための、値全体を囲む単一引用符の使用に注意してください。
この値は、この特定のSailsインスタンスの存続期間中のみ有効になり、構成ファイルの値を上書きします。
また、環境変数を使用して指定された構成は、プログラムで開始されたSailsインスタンスには自動的に適用されないことに注意してください。
上記ルールの特別な例外がいくつかあります:
NODE_ENVとPORTです。
NODE_ENVは、Node.jsアプリの規約です。'production'に設定すると、sails.config.environmentを設定します。- 同様に、
PORTはsails.config.portを設定するもう1つの方法です。これは、便宜上および下位互換性のためにのみ使用されます。これら両方の環境変数を同時に使用する、比較的一般的な例を次に示します。
PORT=443 NODE_ENV=production sails lift現在のプロセス環境に存在する場合、
NODE_ENVとPORTは、コマンドラインまたはプログラムで開始されたSailsアプリに適用されます(明示的にオーバーライドされない限り)。
環境変数は、Sailsアプリを構成する最も強力な方法の1つです。ほぼすべての設定をカスタマイズできるため(JSONシリアル化可能である限り)、このアプローチは多くの問題を解決し、本番環境へのデプロイに対するコアチームの推奨戦略です。以下にいくつか示します。
sails.configの値を設定するコマンドラインで環境変数を設定することが実用的ではない場合(一部のWindowsシステムなど)は、通常のコマンドライン引数を使用して構成オプションを設定できます。これを行うには、オプションの名前の前に2つのダッシュ(--)を付け、ネストされたキーの名前をドットで区切って指定します。コマンドライン引数は、minimistを使用して解析されます。minimistは、配列や辞書などのJSON値を解析しませんが、(特別な構文を使用して)文字列、数値、およびブール値を処理します。いくつかの例を次に示します。
// Set the port to 1338
sails lift --port=1338
// Set a custom "email" value to "[email protected]":
sails lift --custom.email='[email protected]'
// Turn on CSRF support
sails lift --security.csrf
// Turn off CSRF support
sails lift --no-security.csrf
// This won't work; it'll just try to set the value to the string "[1,2,3]"
sails lift --custom.array='[1,2,3]'
Sailsの構成ローダーを利用して、独自のカスタム設定を管理することもできます。詳細については、sails.config.customをご覧ください。
構成に関しては、ほとんどの場合、特定のアプリのランタイム設定(ポート、データベース設定など)の管理に焦点を当てます。ただし、Sails CLI自体をカスタマイズすることも役立つ場合があります。ワークフローを簡素化したり、反復的なタスクを減らしたり、カスタムビルドの自動化を実行したりできます。幸いなことに、Sails v0.10では、それを行うための強力な新しいツールが追加されました。
.sailsrcファイルは、Sailsの他の構成ソースとは異なり、Sails CLIを構成するためにも使用できる点が特徴です。システム全体、ディレクトリのグループ、または特定のフォルダーにcdしたときのみです。これを行う主な理由は、sails generateおよびsails newが実行されたときに使用されるジェネレーターをカスタマイズするためですが、独自のカスタムジェネレーターをインストールしたり、ハードコードされた構成のオーバーライドを適用したりするのにも役立ちます。
また、Sailsは現在の作業ディレクトリの祖先ディレクトリで「最も近い」.sailsrcを検索するため、クラウドホストされているコードリポジトリにチェックインできない機密性の高い設定(データベースのパスワードなど)を構成するために、このファイルを安全に使用できます。「$HOME」ディレクトリに.sailsrcファイルを含めるだけです。詳細については、.sailsrcファイルに関するドキュメントをご覧ください。
sails liftまたはnode app.jsを使用してコマンドラインからSailsアプリを起動しているか、sails.lift()またはsails.load()を使用してプログラムでSailsアプリを起動しているかによって、Sailsは特定の順序で多数のソースから構成を取得します。
sails liftまたはnode app.jsで起動する場合の優先順位(優先度の高い順)sails lift --custom.mailgun.apiToken='foo'はsails.config.custom.mailgun.apiTokenになりますsails_で始まり、ドットを示すために二重アンダースコアを使用する環境変数。例:sails_port=1492 sails lift(その他の例)../、../../などを検索して最初に見つかった.sailsrcファイル~/.sailsrc)にあるグローバルな.sailsrcファイル。config/local.jsファイルdevelopment)の名前に一致する既存のconfig/env/*ファイルconfig/ディレクトリにあるその他のファイル(存在する場合).lift()または.load()の最初の引数として渡される、オプションの構成オーバーライド辞書({})config/local.jsファイルdevelopment)の名前に一致する既存のconfig/env/*ファイルconfig/ディレクトリにあるその他のファイル(存在する場合)
sails.configの設定の組み込みの意味は、場合によっては、「起動」プロセス中にSailsによってのみ解釈されます。言い換えれば、実行時に一部のオプションを変更しても効果はありません。たとえば、アプリが実行されているポートを変更するには、sails.config.portを変更するだけでは不十分です。構成ファイルで設定を変更またはオーバーライドするか、コマンドライン引数などを使用して、サーバーを再起動する必要があります。