rush.js基础
Rush方案
- 多項目并存下,Symlink實現依賴只需一套,無重復安裝
- 提供項目間的自動link
- 多線程構建多項目,加快構建速度
- 自動檢測有改動的項目,按配置產出版本號和changelog
Symlink(符號鏈接)
Rush一次性安裝全部原始依賴在Root下的common/temp目錄下,從該目錄下提供Symlink給單個項目引用。
Symlink只是提供指針,這樣保證了對于依賴本身的更新會實時展現在項目中,且依然保有原有各項目的node_modules的結構
Rush支持pnpm
Symlink幫助Rush對于依賴重復安裝的問題做的更加可控(消除phantom dependencies)和徹底(消除doppelgangers)
phantom dependencies
指沒有在package.json里制定安裝,卻可以在項目中被引用的依賴項。這可能會導致依賴版本不相容和依賴丟失的情況。
發布方案
- rush.json中可配置區分需要發布和不必要發布的包
- 根據上面配置,rush publish自動升級版本號并發布有過更新的包,這兩個也可分開執行
- rush change幫助產出簡介規范的change log,沒有change log的改動會導致CI失敗
Rush好處
- 規范性強,配置細分、各司其職
- 消除phantom,可控性更強
- 消除doppelgangers減少依賴冗余更徹底
- 可以實現更智能的版本選擇
- 支持npm/yarn/pnpm,其中pnpm是Lerna不支持的
- 對change log的更新支持更好,Lerna則需要擴展
Lerna好處
- 當前使用最廣,經過各大型項目檢驗
- 配置簡單,可擴展性好
- 版本號管理有成熟的fixed/independent兩種模式,Rush的Version Policy目前還是實驗性功能。
結論
- rush的使用是咦monorepo風格為前提的
- 通過symlink實現減少重復依賴和消除phantom、doppelgangers
- 提供了專業的改動和發布管理方案
- 接入方便簡潔
- 對比Lerna更專業,但優勢不明顯,如果沒有Rush優勢的需求,更建議使用Lerna
了解Rush還需要了解的知識點:
- npm:如何發布自己的npm包
- pnpm:rush支持的包管理器對pnpm的支持比較完善。部分npm包支持有問題,所以需要知道如何配置
- git
總結
- 上一篇: android 连接tftp 服务器
- 下一篇: java碳纤维山地车车架咋样_自行车碳纤