开发者生态
morning
点点点12.0
2026-08-27
1 阅读
约7分钟阅读
jcbhmr
字号:
pnpm 12 稳定。它是 Rust 中 pnpm 的重写,并且故意不是迁移:pnpm 11 的命令、标志、设置和锁定文件格式全部保留,并且文档描述了这两个版本。真正表现不同的事情的简短列表位于 pnpm 12 中的不同之处。这篇文章涵盖了 pnpm 12 添加的 pnpm 11 从未发布的内容。 npm 上的最新版本仍然指向 pnpm 11 行,因此 pnpm 12 是从 next-12 标记安装的:请参阅安装 pnpm 12 了解其他方法,包括不使用 Node.js。 Homebrew、winget、Scoop 和 Chocolatey 尚未提供此功能。重大更改 Git 依赖项是身份 对于 GitHub、GitLab 和 Bitbucket 上的存储库,说明符现在命名存储库而不是选择传输。 github:owner/repo 、owner/repo 、 git+https://... 和 git+ssh://git@... 都通过主机的规范 HTTPS URL 进行解析,并且锁定文件从不记录这些主机的 SSH URL。要通过 SSH 访问私有托管存储库,请使用 git 自己的 URL 重写来配置计算机:git config --global url。 "git@github.com:" .insteadOf https://github.com/ pnpm shells 到 git ,因此重写适用于其所有 git 操作。未知主机保留其准确的 URL(包括 SSH),并且带有嵌入凭据的 URL 会逐字保留,并且永远不会解析为主机存档。详细信息请参阅如何解决 git 依赖关系。报告了 pnpm-workspace.yaml 中无法识别的设置pnpm 无法识别的设置通常会被默默地忽略 - 拼写错误的minimumReleaseAge 删除了它本来要设置的策略,但没有任何说明。现在报告称,当按键看起来像是拼写错误时,会建议最接近的真实设置名称。当项目引脚运行的 pnpm 满足的 pnpm 版本时,命令会失败并显示 ERR_PNPM_UNRECOGNIZED_WORKSPACE_SETTINGS:在尊重引脚的情况下,该设置不可能适用于不同的 pnpm 版本,因此这是一个需要修复的错误,而不是需要忽略的关键。在其他地方,这都是一个警告,因此尚未清理的项目仍在继续运行。 pnpm config 子命令永远不会失败,因此仍然可以检查和修复损坏的文件。循环依赖图的锁定文件 依赖循环现在在对等解析期间被规范地破坏:每个循环的成员按包 id 排序,并且关闭循环的边缘始终在同一位置切割,无论安装从何处进入循环。因此,锁文件成为依赖关系图的纯函数 - 重新排序的导入程序、重新排序的依赖项和重复安装都会生成字节相同的锁文件,这是以前无法实现的(#13846、#13865)。在大型循环密集型工作空间中,对等解析速度提高了 2-3 倍,使用的内存减少了约 25%,并且生成的锁定文件要小得多。现有的锁定文件继续工作:--frozen-lockfile 不加修改地使用它们,并且跳过解析的安装使它们保持不变。实际重新解析的第一个安装会重新键入循环包的依赖于行走顺序的对等变体一次。请参阅如何解决同级问题。 packageImportMethod:Linux 上首先自动硬链接 reflink 实现了一个新的 inode,并在文件系统的元数据树中复制范围簿记,其中硬链接是一个目录条目 — 在 btrfs 上,这大约使安装从热存储中实现 node_modules 所花费的时间减少了一半。因此,在 Linux 上,auto 现在首先尝试硬链接。 ext4 保持不变(那里从来不支持克隆,因此 auto 已经硬链接),并且 macOS 保持克隆优先,其中 APFS clonefile 是该平台的廉价原语。在 Linux 上,克隆成为第二级而不是第一级,因此拒绝硬链接的存储仍然会获得克隆; packageImportMethod:克隆仍然要求一个直接的。在engineStrict下,当通过可安装包的常规依赖项边缘到达不兼容的包时,即使整个子树挂在可选依赖项条目上,安装现在也会失败。 pnpm 11 安装该软件包并发出安装检查警告。仅通过可选边缘或通过本身跳过的包才能访问的包在两个版本中仍然会被跳过(#13286)。新功能并非所有这些都是 pnpm 12 独有的。注册表修订、远程副作用缓存、audit.ignorePrune、批量分阶段批准以及 pnpm initlatest-tag pin 也在 pnpm 11.25 中提供;其余的只是 v12,因为它们属于 Rust 重写。项目感知的全局 bin 全局安装的 Node 、 deno 或 Bun 遵循当前项目引脚的版本,而不是总是运行全局安装的 — 没有 shell 挂钩,没有 use -style 命令。新的 globalShims 设置选择哪些全局安装的软件包获得这样的垫片;它默认为 { node: true, deno: true, Bun: true } 并按键合并,因此 globalShims: { typescript: true } 添加一个而不重述其余部分。阿斯特
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱