惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Y
Y Combinator Blog
U
Unit 42
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
MongoDB | Blog
MongoDB | Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
B
Blog
T
Tailwind CSS Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
H
Help Net Security
D
Docker
NISL@THU
NISL@THU
P
Privacy International News Feed
L
Lohrmann on Cybersecurity
Scott Helme
Scott Helme
P
Palo Alto Networks Blog
S
Securelist
WordPress大学
WordPress大学
B
Blog RSS Feed
Blog — PlanetScale
Blog — PlanetScale
有赞技术团队
有赞技术团队
L
LINUX DO - 热门话题
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Security Latest
Security Latest
D
DataBreaches.Net
T
The Exploit Database - CXSecurity.com
Recorded Future
Recorded Future
Stack Overflow Blog
Stack Overflow Blog
T
The Blog of Author Tim Ferriss
The Hacker News
The Hacker News
I
Intezer
T
Threat Research - Cisco Blogs
Cyberwarzone
Cyberwarzone
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Privacy & Cybersecurity Law Blog
Cisco Talos Blog
Cisco Talos Blog
L
LangChain Blog
Jina AI
Jina AI
量子位
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
AWS News Blog
AWS News Blog
Apple Machine Learning Research
Apple Machine Learning Research

pnpm Blog

pnpm 11.11-11.14 pnpm 11.10 pnpm 11.9 pnpm 11.8 pnpm 11.7 Why pnpm no longer expands environment variables in a repository's .npmrc pnpm 11.6 pnpm 11.5 pnpm 11.4 pnpm 11.3 pnpm 11.2 pnpm 11.1 pnpm 11.0 pnpm 10.32 pnpm 10.31 pnpm 10.30 pnpm 10.29 pnpm 10.28 pnpm 10.27 pnpm 10.26 pnpm 10.25 我们如何保护新闻编辑部免受npm供应链攻击 pnpm 10.24 pnpm 10.23 pnpm 10.22 pnpm 10.21 pnpm 10.20
🚀 2025年的 pnpm
Zoltan Kochan · 2025-12-29 · via pnpm Blog

2025 年对于 pnpm 来说是具有变革意义的一年。 虽然我们的主要重点是重新定义软件包管理的安全模型,但我们也显著提高了性能和开发者体验。

从默认阻止生命周期脚本到引入全局虚拟存储,以下回顾一下 2025 年发布的主要功能。

使用方法

根据 下载统计 pnpm 的下载量是 2024 年的 2 倍!

首页重新设计

你可能已经注意到,我们重新设计了主页! 此次重新设计得益于我们最主要的赞助商 Bit.cloud

新的主页现在使用 Bit 组件 构建,其中很多工作都是使用 Bit 的 AI 代理 Hope AI 完成的。https://bit.cloud/pnpm/website 我们现在甚至有了自己的设计系统

在 JSNation 上的演讲

今年对我个人而言是一个巨大的里程碑,因为我第一次在大型国际会议——6 月在阿姆斯特丹举行的 JSNation 会议上进行了现场演讲。 我要感谢 JSNation 团队给予我这个绝佳的机会!

令我惊喜的是,pnpm 在社区中如此知名,而且有那么多人在工作中使用它!

我的演讲内容是关于配置依赖项 ,你可以在这里观看录像。

功能亮点

现在,让我们深入了解一下 pnpm v10 在 2025 年期间发布的最重大变化。

默认安全

今年最重要的变化是 pnpm 转向“默认安全”。 在 pnpm v10.0 中,我们不再隐式信任已安装的软件包。

阻止生命周期脚本 (v10.0)

多年来,pnpm install 意味着信任整个依赖树来执行任意代码。 在 v10 版本中,我们关闭了此功能。 pnpm 默认情况下不再运行 preinstallpostinstall 脚本,从而消除了一类巨大的供应链攻击途径。

为了完善此控制,我们在 v10.26 中引入了 allowBuilds,用更灵活的配置取代了之前的 onlyBuiltDependencies

allowBuilds:
esbuild: true
# 仅允许特定版本
nx@21.6.4: true

纵深防御(v10.16v10.21

我们并没有止步于剧本。 我们增加了多层防御措施,在恶意软件到达你的磁盘之前就将其拦截:

  • minimumReleaseAge: 阻止“零日”版本(例如,发布时间不足 24 小时的软件包),让社区有时间标记恶意更新。
  • trustPolicy: no-downgrade: 防止安装来源不如以前版本可靠的更新(例如,未经 CI/CD 验证发布的版本)。
  • blockExoticSubdeps: 防止受信任的依赖项从不受信任的源拉取传递依赖项。

全局虚拟存储 (v10.12)

pnpm 的一项原创创新是内容寻址存储,它通过文件去重来节省磁盘空间。 在 v10.12中,我们使用全局虚拟存储向前迈出了一步。

以前,项目都有自己的 node_modules 结构。 启用 enableGlobalVirtualStore: true 后,pnpm 现在可以将磁盘上中央位置的依赖项直接链接到您的项目中。 这意味着:

  1. 大幅节省磁盘空间:项目之间共享相同的依赖关系图。
  2. 更快的安装速度:如果您有 10 个项目使用 react@19,pnpm 只需要全局链接一次。

原生 JSR 支持(v10.9

我们采用了具有原生支持的新 JSR 注册表。 现在可以使用 jsr: 协议直接从 JSR 安装软件包:

pnpm add jsr:@std/collections

这样就能在 package.json 中正确映射,并能与 npm 依赖项无缝地处理 JSR 包的独特解析规则。

配置依赖项(v10.0)

对于单体仓库和复杂的设置,我们引入了**配置依赖项**。 此功能允许你在多个项目中共享和集中管理 pnpm 配置(例如钩子、补丁和构建权限)。

配置依赖项在解析主依赖关系图之前安装到 node_modules/.pnpm-config 中。 这意味着你可以用它们来:

  • 在不同仓库之间共享 .pnpmfile.cjs 钩子。
  • 集中管理 patchedDependencies 的补丁文件。
  • 维护一个共享的软件包列表,允许这些软件包为 allowBuilds 执行构建脚本。

pnpm-workspace.yaml

configDependencies:
pnpm-plugin-my-company: "1.0.0+sha512-..."

这样可以确保你的 pnpm 配置具有版本控制、一致性,并且在包管理器需要时可用。

自动 JavaScript 运行时管理(v10.14 和 v10.21)

我们已经支持 Node.js 运行时管理一段时间了。 2025年,我们将其扩展到支持其他运行时环境,例如 Deno 和 Bun。

现在您可以通过在 package.json 中通过 devEngines.runtime 指定所需的运行时:

package.json

{
"devEngines": {
"runtime": {
"name": "node",
"version": "24.6.0"
}
}
}

pnpm 将自动下载并使用该特定版本的运行时来运行该项目中的脚本。 这使得“在我的机器上运行正常”成为过去式——团队中的每个人都使用完全相同的运行时,完全由 pnpm 管理。

展望未来

我们已经开始着手开发 pnpm v11.0,该版本在性能方面有一些明显的改进。 全局虚拟存储默认情况下尚未启用。 我们将致力于修复漏洞和完善缺失的功能,以便在未来的主要版本中默认启用该功能。