Skip to content

安装 pnpm

https://pnpm.io/installation

删除 node_modules

shell
npx npkill

添加 preinstall hook

json
{
  "scripts": {
    "preinstall": "npx only-allow pnpm"
    // ...
  }
}

[可选]创建 pnpm-workspace.yaml 并写入以下内容

TIP

  • 这里涉及到一个名为 monorepo 的软件开发策略
yaml
packages:
  # include packages in subfolders (change as required)
  - "apps/**"
  # all packages in direct subdirs of packages/
  - "packages/**"
  # exclude packages that are inside test directories
  - "!**/test/**"

workspacespackage.json 中删除

[可选]使用 pnpm add 安装依赖有警告

  1. 执行 pnpm add 时增加 -w 选项

INFO

考虑到某些第三方会自主执行 pnpm add,此时不好控制 cli 选项,所以推荐第二种方案

  • 考虑到 monorepo,这里应该不是最佳实践
  1. 根目录下创建 .npmrc 文件并写入 ignore-workspace-root-check=true

依据 package-lock.json 生成 pnpm-lock.yaml

shell
pnpm import

删除 package-lock.json

shell
rm -f package-lock.json

使用 pnpm 安装依赖

shell
# 别名:pnpm i
pnpm install

将 npm run xxx 替换为 pnpm xxx

json
{
  "scripts": {
    "test": "npm run test", 
    "test": "pnpm test"
  }
}

修改 package.json 文件中 engine

Released under the MIT License.