Workflow - Create a monorepo with pnpm workspace
Guide
- Monorepo与pnpm:前端项目管理的完美搭档
- 为什么 pnpm+monorepo 是组件库项目的最佳实践
- Monorepo?來聊聊另一種專案管理架構吧!
- 从npm版本依赖到Monorepo大仓项目
- MonoRepo实战:pnpm+nx搭建MonoRepo项目
- Create a monorepo using PNPM workspace
- 从构建到发布:Monorepo 的最佳实践
- TSTemplateMonorepo
- pnpm monorepo 搭建工具库
專案基本結構
project-root/ # 專案根目錄
├── pnpm-workspace.yaml # pnpm 的工作區配置文件,用來定義哪些資料夾屬於工作區範圍
├── package.json # 專案的全局配置文件,通常包括依賴、腳本和項目元數據
└── packages/ # 所有子包的資料夾,存放具體的子項目
├── pkg01/ # 子包01,包含它自己的 package.json 文件和代碼
└── pkg02/ # 子包02,與 pkg01 結構相似,也擁有自己的 package.json 和代碼
新增 專案內全局配置 ./package.json
# 產生一個基本的 package.json
pnpm init
- monorepo 的全局 package.json 設置
"private": true
{
"private": true,
}
新增 工作區配置文件 ./pnpm-workspace.yaml
- 該檔案聲明這是一個 Monorepo 專案。
pnpm install
自動安裝所有 package 的相依套件。packages
字段列出了工作區包含的 package 位置。- 工作區下的 package 會有各自的 package.json。
packages:
- 'packages/*'
Extra - 在專案中限用 pnpm
⚠️ 但目前 npm hook - preinstall 未如預期運作。
{
"scripts": {
"preinstall": "npx only-allow pnpm"
}
}