Workflow - Create a monorepo with pnpm workspace

Guide

專案基本結構

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"
  }
}