Yarn與Lerna管理monorepo使用詳解

什麼是 Yarn workspace

Yarn workspace 是 Yarn 提供的 monorepo 下,管理依賴的機制。對代碼倉庫下,多個 package 的依賴,進行管理:將共同的依賴,做 hosting(提升)。這樣,可以防止 package 中的包重復安裝。 workspace 機制,會在根目錄下,統一安裝依賴到 node_module,並生成 yarn.lock。單個 package 下,不需要再生成 yarn.lock。

如何使用 Yarn workspace

1.Yarn 啟用工作區

yarn config set workspaces-experimental true

命令的含義:添加workspaces-experimental true到系統全局的.yarnrc中。

2.修改根目錄的 package.json,添加如下內容:

{
 "private": true,
 ...
 "workspaces": ["packages/*"]
}

配置項含義: private – 禁止發佈根目錄內容 workspaces – 設置工作區,聲明 workspace 中 package 的路徑。值是一個字符串數組,支持 Glob 通配符。

Lerna 安裝依賴的方式

Lerna 安裝依賴的方式,是使用命令lerna bootstrap。 該命令的作用,是 cd 到 package 文件夾下的每個子文件夾,運行npm installyarn install,在子文件夾中生成版本lock文件和node_module,單獨對依賴進行管理。

Yarn workspace 與 Lerna 結合

結合的方式

  • 配置 lerna.json
{
 ...
 "npmClient": "yarn",
 "useWorkspaces": true
}
  • 配置 package.json
{
 "private": true,
 ...
 "workspaces": ["packages/*"]
}

角色的分配

Yarn 負責管理依賴,workspace 會自動對 package 的引用 ,設置軟鏈接(symlink),並且軟鏈接僅在當前 workspace 中生效。 Lerna 負責版本的發佈工作,對 package 相互之間的依賴,做好版本管理。

好處

減少項目的磁盤占用空間

Yarn 將項目中的共同依賴,提升到根目錄下進行安裝

自動設置軟鏈接,方便調試

Yarn 的 workspace 會自動對 package 的引用,設置 symlink

  • 所有 package 使用同一個 yarn.lock,更少造成沖突且易於審查

使用

  • 首次安裝依賴 lerna bootstrap
  • 安裝dependencies依賴 `yarn add -W [pkg]
  • 安裝devDependencies依賴 yarn add -D -W [pkg]

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

以上就是Yarn與Lerna管理monorepo使用詳解的詳細內容,更多關於Yarn Lerna管理monorepo的資料請關註WalkonNet其它相關文章!

推薦閱讀: