在 Lerna 中使用 pnpm
Lerna 可以在 pnpm 工作空间中使用,以充分利用 pnpm 和 Lerna 的优势。
在 pnpm 工作空间中使用时,Lerna 将:
- 使用
pnpm-workspace.yaml解析包位置(https://pnpm.io/workspaces) - 忽略
package.json中的"workspaces" - 阻止使用
bootstrap、link和add命令。相反,您应直接使用pnpm命令管理依赖(https://pnpm.io/cli/install)。 - 遵守工作空间协议进行包依赖。
- 在
lerna version期间,依赖项将正常更新,但如果存在workspace:前缀,则会保留。 - 如果使用工作空间别名,则
lerna version不会更新依赖项的版本,因为别名没有指定要更新的版本号。
- 在
入门指南
要设置 pnpm 和 Lerna:
-
如果尚未安装,请安装
pnpm:https://pnpm.io/installation。 -
删除根目录中的
node_modules/文件夹(如果存在)。如果尚未使用工作空间,请运行lerna clean以删除所有包中的node_modules/文件夹。 -
在
lerna.json中设置"npmClient": "pnpm"。 -
在项目根目录创建
pnpm-workspace.yaml文件。 如果您已经使用 npm 或 yarn 工作空间,请将package.json中的 "workspaces" 属性移动到pnpm-workspace.yaml。如果您之前没有使用工作空间,请将lerna.json中的 "packages" 属性移动到pnpm-workspace.yaml。例如:package.json{
"workspaces": ["packages/*"]
}和
lerna.json{
"packages": ["packages/*"]
}变成:
pnpm-workspace.yamlpackages:
- "packages/*" -
(可选)运行
pnpm import从现有锁文件生成pnpm-lock.yaml文件。支持的锁文件源请参见 https://pnpm.io/cli/import。 -
运行
pnpm install。