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