为什么迁移?
请在互联网检索相关资料,了解 pnpm 和 yarn 的区别,以及 pnpm 的优势。
另 npm 迁移 pnpm 也通用
迁移步骤
1. 创建 .npmrc 配置文件
根目录创建创建 .npmrc 配置文件,添加如下配置:
auto-install-peers=true
用以解决 package.json 引用的依赖无法解析的问题
2. 创建lock文件
运行如下命令,生成 lock 文件。
pnpm import pnpm-lock.yaml
该命令从另一个包管理器的lock文件生成pnpm-lock.yaml文件, 支持如下包管理器lock文件:
- package-lock.json
- npm-shrinkwrap.json
- yarn.lock
3. 移除遗留文件
- 移除
yarn.lock文件 - 移除
node_modules文件夹
4. 安装依赖
pnpm install
5. 修改 package.json 文件
修改 package.json 文件中的 scripts 字段,将 yarn 替换为 pnpm 。
同时指定 包管理器版本 与 限制包管理器初始化为 pnpm
// package,json
{
"name": "project-name",
"version": "0.1.0",
// 包管理器版本
"packageManager": "pnpm@9.7.1",
"scripts": {
// 限制包管理器初始化 pnpm
"preinstall": "npx only-allow pnpm"
},
}
6. link
pnpm 的 link 命令需要 --global 参数
# 在你要链接的本地包目录中运行以下命令,将包链接到全局环境中
pnpm link --global
在其他项目 引用已 link 的包时也需要指定 --global 参数
# 在你要使用该包的目标项目中运行以下命令,将全局链接的包链接到本地项目中
pnpm link --global example-project-name
注意事项
- pnpm 不会安装依赖的 peerDependencies,需要手动安装,或者在
.npmrc文件中添加auto-install-peers=true配置。 - 如果隐式引用了某个依赖包的依赖,但是没有在
package.json文件中显式引用,可能会导致依赖无法解析的问题。需要手动添加。例如引用了Element-plus中的dayjs依赖,但是没有在package.json文件中显式引用dayjs依赖。 - 有些依赖可能不支持 pnpm,需要手动安装。