最近,在產生器系統 (npm search yeoman-generator
) 中引入了許多變更與新功能。如果您沒在關注 yeoman/generator,可能錯過最新的變更。別擔心,我們已在 變更日誌中記錄每個最新的發行版本!
隨著新的一年開始,我們決定編列我們的官方產生器應實作的最重要變更之事項清單。這將讓它們乾淨,但也能因應即將到來的新功能,尤其是組成多個產生器的功能!
您可能不是官方產生器維護員,但我們建議您遵循我們的做法,並確保您遵守這些指南。所以,開始吧!
產生器應產生 .yo-rc.json
檔案
這 .yo-rc.json
檔案允許您儲存組態,但也是用來定義專案根資料夾的標記。這使使用者能從子目錄執行 yo
命令,來維護他們的整個專案。
這是已組合的產生器將如何得知專案根目錄的方式。
只要在您的產生器中某處加入這行,就能至少產生一次檔案
this.config.save();
當然,如果您使用 config 物件來儲存資料,它就會已經建立。在我們的 API 參考中進一步了解 config Storage。
使用新的 .extend()
方法,取代 util.inherit
在不久前,您可以用這樣的方式來延伸 Base 產生器
var BlogGenerator = (module.exports = function() {
generators.Base.apply(this, arguments);
// ...
});
util.inherits(BlogGenerator, generators.Base);
現在,您可以用類似 Backbone.js 的方法來完成相同的事
var BlogGenerator = (module.exports = generators.Base.extend({
/* prototype methods goes here */
}));
如您所知,我們的下一個重要里程碑是允許產生器互相組合。這意味著您將可以在自己的產生器中使用外部產生器,並允許使用者用多個產生器來建立他們的應用程式 (例如,我想使用 Sailsjs 和 Angular、Bootstrap 建立一個應用程式,並支援 Jenkins 測試)。使用 .extend
繼承簽章,將使您的產生器更易於整合到可組合的 Yeoman 生態系統中。
請注意,我們已將 繼承邏輯擷取到一個獨立的小型 NPM 模組中。這將讓您能毫不費力地將這樣的功能加入自己的專案!
停用過時的測試方法
在 0.16.0
發行版本中,我們停用了部分測試方法並新增其他方法。停用方法現在會記錄到主控台,所以務必擺脫那些方法!
此外,協助宣告方法現在顯示在 yeoman.assert
名稱空間中。
更新所產生 bower.json 和 package.json 中的依賴關係
照往例,更新您的 deps。您可以使用 david 工具 來執行這項工作。
確認 package.json peerDependencies
沒有使用波浪號 ~
號版本控管
NPM peerDependencies
想要弄對很不容易。由於它們會安裝到全域 node_modules
資料夾中,因此它們經常會因為不同套件之間需要不相容的版本而導致安裝錯誤。請發揮公德心,不要使用嚴格的版本需求來讓問題惡化。
因此,定下一條原則,永遠使用最小範圍 (>=
) 或者使用任何可用的版本 (*
) 來定義 peerDependencies
版本。
{
"peerDependencies": {
// GOOD
"grunt-cli": ">= 0.1.0",
// GOOD
"gulp": "*",
// BAD - don't ever do this
"generator-karma": "~1.2.0",
"generator-commonjs": "1.2.0"
}
}
就此祝您好運!
各位朋友,這就是全部內容!祝您一切順利,繼續打造絕佳的產生器。
如果您是產生器作者,您真的應該在 Generator 系統儲存庫中按一下 watch
按鈕 - 這樣您就可以隨時掌握我們未來的計畫和更新。此外,務必查看 [Composability]
問題,這是我們下一個重要的里程碑,我們需要您的意見回饋!