停止支持Node.js 14
如果你仍需要使用Node.js 14,不用担心。我们将pnpm捆绑到了Node.js中。这意味着无论您安装的是哪个版本的Node.js,pnpm都可以使用必要的运行时环境。为了让它工作,您需要使用独立脚本安装pnpm或者安装@pnpm/exe包。
配置更新
- 默认启用auto-install-peers、dedupe-peer-dependents、resolve-peers-from-workspace-root等选项。
- 默认将save-workspace-protocol设置为rolling,默认情况下解析模式设置为lowest-direct。
- 默认启用publishConfig.linkDirectory选项。
大多数配置更改涉及peer dependencies(同级依赖)。其中大多数设置早已实施,我们建议用户在遇到同级依赖问题时使用这些设置。最近添加了dedupe-peer-dependents功能,解决了许多此类问题。通过这些新的默认设置,在从其他包管理器迁移到pnpm时将面临更少的问题。
锁定文件修改
- 采用Lockfile v6格式。该新格式通过删除包ID中的哈希值来提高锁定文件的可读性,并对导入者部分的字段进行重新排列。 新的pnpm-lock.yaml文件更加耐git合并冲突!
- 在pnpm-lock.yaml中,resolution对象中删除了registry字段。
- 即使没有依赖项,也会为项目生成锁定文件。
其他变化
- 如果package.json中有files字段,则只会部署其中列出的文件。注入包时也应用相同逻辑。可以通过将deploy-all-files选项设置为true来更改此行为(有关问题#5911)。
- 直接依赖会被去重。如果一个依赖在项目和工作区根目录中都存在,则只链接到工作区根目录。
迁移说明
- 在CI中更新pnpm到v8之前,请重新生成pnpm-lock.yaml。要升级锁定文件,请运行pnpm install并提交更改。现有的依赖项将不会得到更新;但是,由于pnpm v8中的配置更改,一些缺少的peer dependencies可能会添加到锁定文件中,并且某些包可能会被去重复。
- 在CI之前甚至可以在升级Node.js之前就提交新的锁定文件,因为pnpm v7已经支持新的锁定文件格式。
pnpm v7支持
pnpm v7可能不会收到任何新功能,但是它将继续获得数月的漏洞修复和至少一年的漏洞修补。