pnpm v8 发布

6,830 阅读2分钟

停止支持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可能不会收到任何新功能,但是它将继续获得数月的漏洞修复和至少一年的漏洞修补。