我們先說下 Yarn workspace
首先Yarn workspace 是 Yarn 提供的 monorepo 下,管理依賴的機制。這就說主要對代碼倉庫下,多個 package 的依賴,進(jìn)行管理:將共同的依賴,做 hosting(提升)。前述這樣就可以有效的防止 package 中的包重復(fù)安裝。 workspace 機制,會在根目錄下,統(tǒng)一安裝依賴到 node_module,并生成 yarn.lock。單個 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/*"] }
配置項含義: private - 禁止發(fā)布根目錄內(nèi)容 workspaces - 設(shè)置工作區(qū),在這份聲明 workspace 中 package 的路徑。值是一個字符串?dāng)?shù)組,支持 Glob 通配符。
Lerna 安裝依賴的方式
Lerna 安裝依賴的方式,是使用命令lerna bootstrap。 該命令的作用,是 cd 到 package 文件夾下的每個子文件夾,運行npm install或yarn install,在子文件夾中生成版本lock文件和node_module,多帶帶對依賴進(jìn)行管理。
Yarn workspace 與 Lerna 結(jié)合
結(jié)合的方式
配置 lerna.json
{ ... "npmClient": "yarn", "useWorkspaces": true }
配置 package.json
{ "private": true, ... "workspaces": ["packages/*"] }
角色的分配
其中Yarn 負(fù)責(zé)管理依賴,這就的話,workspace 會自動對 package 的引用 ,設(shè)置軟鏈接(symlink),并且軟鏈接僅在當(dāng)前 workspace 中生效。 Lerna 負(fù)責(zé)版本的發(fā)布工作,對 package 相互之間的依賴,做好版本管理。
現(xiàn)在我們說說有優(yōu)點
可以有效的減少項目的磁盤占用空間
也可以讓Yarn 將項目中的共同依賴,提升到根目錄下進(jìn)行安裝
還有就是自動設(shè)置軟鏈接,方便調(diào)試
Yarn 的 workspace 會自動對 package 的引用,設(shè)置 symlink
所有 package 使用同一個 yarn.lock,更少造成沖突且易于審查
再來說的就是使用
首次安裝依賴lerna bootstrap
安裝dependencies依賴 `yarn add -W [pkg]
安裝devDependencies依賴yarn add -D -W [pkg]
-W的含義: 安裝依賴到 workspace -D的含義: 安裝依賴到devDependencies`
以上就是本篇文章關(guān)于Yarn與Lerna管理monorepo使用詳細(xì)解析,歡迎大家關(guān)注后續(xù)更多精彩內(nèi)容。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129037.html
摘要:目前最常見的解決方案是和的特性。具體的使用方法移步官網(wǎng)而使用作為包管理器的同學(xué),可以在中以字段聲明,就會以的方式管理。這樣的話,無論你的包管理器是還是,都能發(fā)揮的優(yōu)勢要是包管理是,就會把依賴安裝交給處理。 最近我接手了一個項目,代碼量比較大、有點復(fù)雜。倉庫 clone 下來代碼有 50+ MB,npm install 安裝完體積飚到了近 2GB …… 熟悉了一下,這個項目比較復(fù)雜,采用...
摘要:最近發(fā)現(xiàn)公司一個項目的目錄組織挺奇怪的,所有的子項目都放在了目錄里,還有這種騷操作特意查了下資料,發(fā)現(xiàn)是一種比較流行的項目管理模式。 最近發(fā)現(xiàn)公司一個項目的目錄組織挺奇怪的,所有的子項目都放在了packages目錄里,還有這種騷操作?特意查了下資料,發(fā)現(xiàn)是一種比較流行的monorepo項目管理模式。近幾年比較火的React,Vue,Babel都是用的這種模式: showImg(http...
摘要:引言本周精讀的文章是。精讀總的來說,雖然拆分子倉庫拆分子包是進(jìn)行項目隔離的天然方案,但當(dāng)倉庫內(nèi)容出現(xiàn)關(guān)聯(lián)時,沒有任何一種調(diào)試方式比源碼放在一起更高效。前端精讀幫你篩選靠譜的內(nèi)容。 1. 引言 本周精讀的文章是 The many Benefits of Using a Monorepo。 現(xiàn)在介紹 Monorepo 的文章很多,可以分為如下幾類:直接介紹 Lerna API 的;介紹如何...
這是講 ahooks 源碼的第一篇文章,簡要就是以下幾點: 加深對 React hooks 的理解?! W(xué)習(xí)如何抽象自定義 hooks。構(gòu)建屬于自己的 React hooks 工具庫?! ∨囵B(yǎng)閱讀學(xué)習(xí)源碼的習(xí)慣,工具庫是一個對源碼閱讀不錯的選擇?! ∽ⅲ罕鞠盗袑?ahooks 的源碼解析是基于v3.3.13。自己 folk 了一份源碼,主要是對源碼做了一些解讀,可見詳情?! 〉谝黄饕榻B a...
摘要:打造個人團(tuán)隊適用的開源項目規(guī)范是一個用來優(yōu)化托管在上的多代碼庫的工作流的一個管理工具可以讓你在主項目下管理多個子項目,從而解決了多個包互相依賴,且發(fā)布時需要手動維護(hù)多個包的問題。 打造個人or團(tuán)隊適用的開源項目規(guī)范 lerna Lerna 是一個用來優(yōu)化托管在gitnpm上的多package代碼庫的工作流的一個管理工具,可以讓你在主項目下管理多個子項目,從而解決了多個包互相依賴,且發(fā)布...
閱讀 506·2023-03-27 18:33
閱讀 709·2023-03-26 17:27
閱讀 607·2023-03-26 17:14
閱讀 578·2023-03-17 21:13
閱讀 503·2023-03-17 08:28
閱讀 1755·2023-02-27 22:32
閱讀 1262·2023-02-27 22:27
閱讀 2067·2023-01-20 08:28