溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Yarn與Lerna管理monorepo使用的方法

發(fā)布時(shí)間:2022-07-08 09:52:42 來源:億速云 閱讀:172 作者:iii 欄目:開發(fā)技術(shù)

這篇“Yarn與Lerna管理monorepo使用的方法”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“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 installyarn 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 會自動對 package 的引用 ,設(shè)置軟鏈接(symlink),并且軟鏈接僅在當(dāng)前 workspace 中生效。 Lerna 負(fù)責(zé)版本的發(fā)布工作,對 package 相互之間的依賴,做好版本管理。

好處

減少項(xiàng)目的磁盤占用空間

Yarn 將項(xiàng)目中的共同依賴,提升到根目錄下進(jìn)行安裝

自動設(shè)置軟鏈接,方便調(diào)試

Yarn 的 workspace 會自動對 package 的引用,設(shè)置 symlink

  • 所有 package 使用同一個(gè) yarn.lock,更少造成沖突且易于審查

使用

  • 首次安裝依賴 lerna bootstrap

  • 安裝dependencies依賴 `yarn add -W [pkg]

  • 安裝devDependencies依賴 yarn add -D -W [pkg]

-W 的含義: 安裝依賴到 workspace -D的含義: 安裝依賴到devDependencies`

以上就是關(guān)于“Yarn與Lerna管理monorepo使用的方法”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI