構成の管理

ユーザーの構成オプションを保存し、サブジェネレータ間で共有することは一般的なタスクです。たとえば、言語 (ユーザーは CoffeeScript を使用していますか?)、スタイルオプション (スペースまたはタブを使用するインデント)、などのプリファレンスを共有することは一般的です。

これらの構成は Yeoman ストレージ API を介して .yo-rc.json ファイルに保存できます。この API には generator.config オブジェクトを使用してアクセスできます。

一般的なメソッドを以下に示します。

メソッド

this.config.save()

このメソッドは構成を .yo-rc.json ファイルに書き込みます。ファイルがまだない場合は、save メソッドがファイルを作成します。

.yo-rc.json ファイルはプロジェクトのルートも決定します。そのため、ストレージをまったく使用していない場合でも、save を常に :app ジェネレータ内で呼び出すことがベストプラクティスとされています。

また、save メソッドは構成オプションを set するたびに自動的に呼び出されることに注意してください。そのため、通常は明示的に呼び出す必要はありません。

this.config.set()

set はキーと関連する値、または複数のキーと値のハッシュオブジェクトを受け取ります。

値は JSON シリアル化可能 (文字列、数値、または非再帰オブジェクト) である必要があることに注意してください。

this.config.get()

getString キーをパラメータとして受け取り、関連付けられた値を返します。

this.config.getAll()

使用可能な全体の構成のオブジェクトを返します。

返されたオブジェクトは参照ではなく値で渡されます。つまり、構成ストアを更新するには依然として set メソッドを使用する必要があります。

this.config.delete()

キーを削除します。

this.config.defaults()

デフォルト値として使用するオプションのハッシュを受け取ります。キーと値のペアがすでに存在する場合は、その値はそのままになります。キーがない場合は追加されます。

.yo-rc.json の構造

.yo-rc.json ファイルは、複数のジェネレータからの構成オブジェクトが保存された JSON ファイルです。各ジェネレータ構成には名前空間が割り当てられており、ジェネレータ間で名前の競合が発生しないようにします。

これは各ジェネレータ構成がサンドボックス化されており、サブジェネレータ間でのみ共有できることも意味します。ストレージ API を使用して、異なるジェネレータ間で構成を共有することはできません。異なるジェネレータ間でデータを共有するには、起動時にオプションと引数を使用します。

これが .yo-rc.json ファイルの内部構造のようすです

{
  "generator-backbone": {
    "requirejs": true,
    "coffee": true
  },
  "generator-gruntfile": {
    "compass": false
  }
}

この構造は、エンドユーザーにとって詳細にわたっています。つまり、高度な設定はこのファイルに保存し、あらゆるオプションについてのプロンプトを使用するのが不合理な場合、高度なユーザーに直接ファイルの編集を依頼することを推奨します。