管理組態

儲存使用者組態選項並在子產生器之間共享是常見的任務。例如,通常會分享像是語言的偏好設定 (使用者會使用 CoffeeScript 嗎?)、樣式選項 (空白或標籤縮排) 等偏好設定。

這些組態可以使用 Yeoman 儲存 API 儲存在 .yo-rc.json 檔案中。此 API 可以在 generator.config 物件中取得。

以下是一些你會使用的常見方法。

方法

this.config.save()

這個方法會將組態寫入到 .yo-rc.json 檔案中。如果檔案尚未存在,save 方法將會建立它。

.yo-rc.json 檔案也會決定專案的根目錄。因為這個原因,即使你沒有使用儲存功能,通常會建議在 :app 產生器中呼叫 save

另外請注意,每一次你 set 組態選項時, save 方法會自動呼叫。所以通常不需要明確呼叫它。

this.config.set()

set 會取得一個金鑰和關聯的值,或多個金鑰/值的物件雜湊。

請注意值必須為 JSON 可序列化的 (字串、數字或非遞迴物件)。

this.config.get()

get 會取得 String 金鑰作為參數,並傳回關聯的值。

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
  }
}

此結構對於最終使用者來說是很全面的。這表示你可能希望在本檔案中儲存進階組態,並要求進階使用者在不使用提示列來設定每個選項時,直接編輯檔案。