跳到主内容

pnpm 11.11-11.14

· 一分钟阅读
Zoltan Kochan
pnpm 的首席维护者

pnpm 11.11 至 11.14 版本引入了原生的工作区发布管理功能(包括 pnpm changepnpm lane 和纯粹的 pnpm version -r 命令)、用于端到端诊断安装状态的 pnpm doctor 命令、用于管理注册源上包与组织的 pnpm accesspnpm team 命令、收敛覆盖机制,以及支持协议标识符的 peerDependencies 声明。 它们还修复了一个路径遍历漏洞,将冷缓存解析期间的峰值内存占用降低了约 30%,并解决了对等依赖死锁问题。

pnpm 11.10

· 一分钟阅读
Zoltan Kochan
pnpm 的首席维护者

pnpm 11.10 引入了 _auth 设置以支持 CI 友好的注册源身份验证,新增了 pnpm prefixpnpm issues 命令,并支持通过 pnpm self-update 安装 pnpm v12(Rust 重写版本)。 此外,该版本还提高了 pnpm up 的准确性,加快了针对忽略简略元数据的注册源的解析速度,并增强了全局包管理、pnpm deploypnpm pack-app 的健壮性。

pnpm 11.9

· 一分钟阅读
Zoltan Kochan
pnpm 的首席维护者

pnpm 11.9 针对无法发布校验和的注册源计算缺失的 tarball 完整性哈希值,新增 pnpm sbom --exclude-peers 选项,优化了包含循环依赖的锁文件的审计性能,修复了对等依赖解析的不确定性问题,并收紧了 minimumReleaseAgetrustPolicy 的排除逻辑。

pnpm 11.8

· 一分钟阅读
Zoltan Kochan
pnpm 的首席维护者

pnpm 11.8 引入了安装“预演”功能、Node.js 包映射生成、更丰富的 SBOM 输出,使 pnpm view 默认指向当前包,并修正了 pnpm run --no-bail 的退出码。 此外,该版本还修复了配置依赖项的锁文件遍历问题,以及多项关于安装/更新确定性的修复。

pnpm 11.7

· 一分钟阅读
Zoltan Kochan
pnpm 的首席维护者

pnpm 11.7 引入了 frozenStore 设置,支持针对只读包存储进行安装;新增了 --batch 标志,允许在单个请求中发布整个工作区;支持针对特定作用域的身份验证令牌;并将完整的解析与安装过程委托给 pacquet 处理。 此外,该版本还增强了对锁文件别名的处理,让多个安装路径确定,并修复了若干与发布及 Windows 平台相关的问题。

为什么 pnpm 不再解析仓库 .npmrc 文件中的环境变量

· 一分钟阅读
Zoltan Kochan
pnpm 的首席维护者

过去,pnpm 会在任何发现 ${ENV_VAR} 占位符的地方对其进行解析替换——这包括你刚克隆的代码仓库中的 .npmrcpnpm-workspace.yaml 文件。 这种机制可能被恶意仓库利用,从而窃取你环境中的敏感信息。 自 v10.34.2 和 v11.5.3 版本起,pnpm 不再解析由仓库控制的注册源及凭证配置中的环境变量。

这是一项安全修复(GHSA-3qhv-2rgh-x77r),对于某些配置而言,它属于破坏性变更。 本文介绍了此次攻击、具体发生了哪些变化,以及如何进行迁移。

pnpm 11.6

· 一分钟阅读
Zoltan Kochan
pnpm 的首席维护者

pnpm 11.6 新增了一种无需配置文件的注册源身份验证方式,支持通过 npm_config_//…pnpm_config_//… 环境变量进行配置;同时提高了默认网络并发数,并在仅缺失 pnpm-lock.yaml 文件时跳过完整的重新解析过程。 它还会推断可选依赖项的平台字段,从而确保绝不会下载针对其他平台的二进制文件。

pnpm 11.5

· 一分钟阅读
Zoltan Kochan
pnpm 的首席维护者

pnpm 11.5 新增了 hoistingLimits 设置,用于控制 nodeLinker: hoisted 模式下依赖项的提升层级;更换了交互式提示库以修复长选项列表中的滚动问题;在信任级别中识别了暂存发布;并针对安装和 dist-tag 进行了多项修复。

pnpm 11.4

· 一分钟阅读
Zoltan Kochan
pnpm 的首席维护者

pnpm 11.4 关闭了有关锁文件完整性、凭证范围、git 解析、补丁文件和依赖项别名的一系列供应链漏洞,默认情况下使让 tarball 完整性不匹配导致安装硬失败(通过具有狭窄范围的“--update-checksums”选入),并将 pnpm runtime set 更改为默认写入devEngines.runtime 而不是 engines.runtime

pnpm 11.3

· 一分钟阅读
Zoltan Kochan
pnpm 的首席维护者

pnpm 11.3 新增了对 npm 分阶段发布功能(pnpm stage)的支持;引入了全新的 trustLockfile 设置,用于跳过对已受信任的锁文件进行的供应链验证环节;此外,还提供了 pnpm pkgpnpm repopnpm set-script 命令的原生实现。 此外,它为 packpublish 命令新增了 --skip-manifest-obfuscation 标志,并降低了在大型工作区中执行 minimumReleaseAgetrustPolicy 验证时的内存占用。