使用 pnpm 与 Lerna
Lerna 可以用在 pnpm
工作区 中,以获得 pnpm
和 Lerna 的全部优势。
在 pnpm
工作区中使用时,Lerna 将
- 使用
pnpm-workspace.yaml
解析包位置 (https://pnpm.npmjs.net.cn/workspaces) - 忽略
package.json
中的"workspaces"
- 阻止使用
bootstrap
、link
和add
命令。相反,您应该直接使用pnpm
命令来管理依赖项 (https://pnpm.npmjs.net.cn/cli/install)。 - 尊重用于包依赖项的 工作区协议。
- 在
lerna version
期间,依赖项将像往常一样更新,但如果存在,则会保留workspace:
前缀。 - 如果使用了 工作区别名,则
lerna version
不会提升依赖项的版本,因为别名未指定要提升的版本号。
- 在
入门
使用 pnpm 设置 Lerna
-
如果尚未安装,请安装
pnpm
:https://pnpm.npmjs.net.cn/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.npmjs.net.cn/cli/import。 -
运行
pnpm install
。