pnpm版本管理 corepack基础使用 monorepo项目pnpm8升级pnpm10

131 阅读1分钟

pnpm版本管理

推荐使用 corepack 进行管理

corepack 是跟随node一起下载的(在node16.10.0之后 之前的不支持要独立下载)

注意事项: 如果corepack enable不生效 可能是收到之前安装的全局pnpm影响 先删除全局pnpm

常用命令:

  1. corepack enable  开启 (开启后全局才能使用pnpm)
  2. corepack disable 关闭
  3. corepack prepare pnpm@v10.18.3  --activate  准备并激活指定版本pnpm
  4. corepack use pnpm@v10.18.3  给当前项目指定包管理

monorepo项目 我的是react项目 pnpm8 -> pnpm10

备份老文件 .npmrc pnpm-lock.yarm package.json

修改

  1. .npmrc 需要配置要提升的包 下面是举例 我的是react项目不提升react就会报错(React DevTools 无法正确访问 React 内部属性)
//.npmrc
public-hoist-pattern[]=react
public-hoist-pattern[]=react-dom
public-hoist-pattern[]=antd
public-hoist-pattern[]=@ant-design/*
  1. package.json中添加onlyBuiltDependencies pnpm10在install的时候依赖包的生命周期脚本(preinstall, install, postinstall 等)默认不再执行,需要使用 onlyBuiltDependencies 参数手动指定允许执行脚本的包
//执行 pnpm approve-builds 手动选择一般全选 执行完会自动添加一些信息
pnpm approve-builds
  1. pnpm-workspace.yaml
onlyBuiltDependencies:
  - core-js
  - core-js-pure
  - es5-ext
  - esbuild
  1. 删除pnpm-lock.yarm 和 项目中所有node_module
  2. pnpm install 重新安装依赖生成新pnpm-lock.yaml文件