Yarn與Lerna管理monorepo使用詳解
什么是 Yarn workspace
Yarn workspace 是 Yarn 提供的 monorepo 下,管理依賴的機(jī)制。對代碼倉庫下,多個(gè) package 的依賴,進(jìn)行管理:將共同的依賴,做 hosting(提升)。這樣,可以防止 package 中的包重復(fù)安裝。 workspace 機(jī)制,會在根目錄下,統(tǒng)一安裝依賴到 node_module,并生成 yarn.lock。單個(gè) package 下,不需要再生成 yarn.lock。
如何使用 Yarn workspace
1.Yarn 啟用工作區(qū)
yarn config set workspaces-experimental true
命令的含義:添加workspaces-experimental true到系統(tǒng)全局的.yarnrc中。
2.修改根目錄的 package.json,添加如下內(nèi)容:
{
"private": true,
...
"workspaces": ["packages/*"]
}
配置項(xiàng)含義: private - 禁止發(fā)布根目錄內(nèi)容 workspaces - 設(shè)置工作區(qū),聲明 workspace 中 package 的路徑。值是一個(gè)字符串?dāng)?shù)組,支持 Glob 通配符。
Lerna 安裝依賴的方式
Lerna 安裝依賴的方式,是使用命令lerna bootstrap。 該命令的作用,是 cd 到 package 文件夾下的每個(gè)子文件夾,運(yùn)行npm install或yarn install,在子文件夾中生成版本lock文件和node_module,單獨(dú)對依賴進(jìn)行管理。
Yarn workspace 與 Lerna 結(jié)合
結(jié)合的方式
- 配置 lerna.json
{
...
"npmClient": "yarn",
"useWorkspaces": true
}
- 配置 package.json
{
"private": true,
...
"workspaces": ["packages/*"]
}
角色的分配
Yarn 負(fù)責(zé)管理依賴,workspace 會自動(dòng)對 package 的引用 ,設(shè)置軟鏈接(symlink),并且軟鏈接僅在當(dāng)前 workspace 中生效。 Lerna 負(fù)責(zé)版本的發(fā)布工作,對 package 相互之間的依賴,做好版本管理。
好處
減少項(xiàng)目的磁盤占用空間
Yarn 將項(xiàng)目中的共同依賴,提升到根目錄下進(jìn)行安裝
自動(dòng)設(shè)置軟鏈接,方便調(diào)試
Yarn 的 workspace 會自動(dòng)對 package 的引用,設(shè)置 symlink
- 所有 package 使用同一個(gè) yarn.lock,更少造成沖突且易于審查
使用
- 首次安裝依賴
lerna bootstrap - 安裝
dependencies依賴 `yarn add -W [pkg] - 安裝
devDependencies依賴yarn add -D -W [pkg]
-W 的含義: 安裝依賴到 workspace -D的含義: 安裝依賴到devDependencies`
以上就是Yarn與Lerna管理monorepo使用詳解的詳細(xì)內(nèi)容,更多關(guān)于Yarn Lerna管理monorepo的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Vuex unknown action type報(bào)錯(cuò)問題及解決
這篇文章主要介紹了Vuex unknown action type報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
關(guān)于vue的語法規(guī)則檢測報(bào)錯(cuò)問題的解決
在配置路有的時(shí)候,陸續(xù)出現(xiàn)了各種報(bào)錯(cuò)其中最多的是一些寫法,例如空格,縮進(jìn),各種括號,這篇文章主要介紹了關(guān)于vue的語法規(guī)則檢測報(bào)錯(cuò)問題的解決,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-05-05
淺談Vue render函數(shù)在ElementUi中的應(yīng)用
今天小編就為大家分享一篇淺談Vue render函數(shù)在ElementUi中的應(yīng)用,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
Vue3之使用js實(shí)現(xiàn)動(dòng)畫示例解析
這篇文章主要為大家介紹了Vue3之使用js實(shí)現(xiàn)動(dòng)畫示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
vue2實(shí)現(xiàn)搜索結(jié)果中的搜索關(guān)鍵字高亮的代碼
這篇文章主要介紹了vue2實(shí)現(xiàn)搜索結(jié)果中的搜索關(guān)鍵字高亮的代碼,需要的朋友可以參考下2018-08-08

