在 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
。