基于Rush的Monorepo探索

在團(tuán)隊開發(fā)中,我們經(jīng)常會有工具包多、項目多,隨著團(tuán)隊發(fā)展隨之而來的問題會越來越多。本次分享用Rush解決以上問題,在實際中探索出 真正的Monorepo 場景的較佳實踐。

首先我們來了解一下如何開始Rush

第一步:安裝

npm install -g @microsoft/rush

可通過rush h 判斷是否安裝成功

第二步:初始化

安裝成功后,可通過rush init 命令初始化項目

image.png

目錄結(jié)構(gòu)

image.png
第三步:安裝依賴

Rush安裝依賴有幾種方式:
1、rush add -p PACKAGE --dev --all
跟目錄執(zhí)行命令安裝所有的包
2、rush add -p PACKAGE --dev
在包里面執(zhí)行,只安裝在當(dāng)前包中

第四步:rush update

rush update 命令會依據(jù) package.json 文件安裝依賴,并按需更新 shrinkwrap 文件(shrinkwrap 文件是存儲倉庫內(nèi)所有項目的依賴和版本的中心,它被放到 "common/config/rush"文件夾下)。此命令Rush 會在一次性給倉庫內(nèi)的所有項目安裝。 當(dāng)你從 Git 上拉去文件,或者修改
完 package.json 文件后,需要執(zhí)行 "rush update" 才能開始工作。如果無需更新,則 "rush update" 會在瞬時完成。

rush update和rush install的區(qū)別:
"rush install" 命令會基于 "rush update' 創(chuàng)建/更新的 shrinkwrap 文件來給倉庫內(nèi)的所有項目安裝依賴)。
清除依賴可以用rush purge命令,清除node_modules和rush相關(guān)依賴。

通過以上流程我們可以得到一個空項目,但是一個完整的monorepo需要完善的發(fā)布流程,我們還需要一些配置

rush.json

在rush init的時候生成的rush.json,在projects中配置相關(guān)項目,在projects中配置的項目,rush可以識別出,并可執(zhí)行rush update等相關(guān)命令,需要publish的包,可通過配置shouldPublish屬性,即可操作發(fā)包相關(guān)流程。

關(guān)于多包發(fā)布
在 Rush 中,rush change 是發(fā)包流程的起點,會產(chǎn)生changes文件,/common/changes/[packages]/[feature_time].json,流程如下:

image.png

rush version 或 rush publish --apply 則會基于生成的 changefile.json 進(jìn)行版本號的更新,被發(fā)布 package 的上層 package 的版本號可能會被更新,rush publish --publish 則會基于 changefile.json 進(jìn)行對應(yīng) package 的發(fā)布。
Rush 的發(fā)布流程與 Changesets 基本一致 。
rush中發(fā)布私有源,需要私有源配置,可通過注入環(huán)境變量校驗身份信息


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、創(chuàng)建項目 npm v5.2.0引入的一條命令(npx),引入這個命令的目的是為了提升開發(fā)者使用包內(nèi)提供的命令行...
    三也視界閱讀 2,479評論 0 2
  • 前端工程化 - npm 什么是npm npm的全稱Node Package Manager,npm原先只是作為no...
    cbw100閱讀 1,901評論 0 0
  • 1.npm是Node官方提供的包管理工具,他已經(jīng)成了Node包的標(biāo)準(zhǔn)發(fā)布平臺,用于Node包的發(fā)布、傳播、依賴控制...
    shuo_fd6c閱讀 2,837評論 0 0
  • NPM筆記: 名字的含義: 1、是Node的開放式模塊登記和管理系統(tǒng) 2、Node默認(rèn)的模塊管理器,是一個命令行下...
    名字神馬的都是浮云閱讀 1,053評論 0 3
  • Yarn 對你的代碼來說是一個包管理器, 你可以通過它使用全世界開發(fā)者的代碼, 或者分享自己的代碼。Yarn 做這...
    古德毛寧_39de閱讀 7,955評論 0 2

友情鏈接更多精彩內(nèi)容