跳到主要内容

pnpm 的 2021 年

· 阅读需 4 分钟

现在是年底,对 pnpm 来说是个好年头,所以让我们看看它的进展情况。

使用量

下载统计

我今年的目标是在下载量上击败 Bower。 我们在11月实现了这个目标:

2021 年 pnpm 的下载量约为 2020 年的3倍

备注

这些统计数据甚至没有衡量 pnpm 可能被安装的所有不同的方式! 他们只测量了 pnpm npm package 的下载量。 今年我们还添加了 pnpm 的二进制编译版本,它们的交付的方式是不同的。

文档访问

我们使用 Google Analytics 从我们的文档中收集了一些非个性化的统计数据。 在 2021 年,有时我们每周有超过 2,000 名独立访客。

我们的大部分用户来自美国和中国。

GitHub stars

我们的 主 GitHub 仓库 今年获得了 +5,000 颗星。

新用户

我们今年最大的新用户是 字节跳动 (TikTok 背后的公司)。

此外,许多优秀的开源项目开始使用 pnpm。 有些人转而使用 pnpm 是因为它对 monorepos 的大力支持:

有些人之所以切换为 pnpm,是因为他们喜欢 pnpm 的高效、快速和美观:

功能亮点

新的锁文件格式(自 v6.0.0

今年第一个也是最重要的变化之一是新的 pnpm-lock.yaml 格式。 这是一个突破性的变化,所以我们不得不发布 v6。 但它是成功的。 旧的锁文件经常导致 Git 冲突。 由于引入了新格式,我们没有收到任何关于 Git 冲突的投诉。

管理 Node.js 版本(自 v6.12.0

我们发布了一个允许管理 Node.js 版本的新命令( pnpm env )。 因此,您可以使用 pnpm 而不是像 nvm 或 Volta 这样的 Node.js 版本管理器。

此外,pnpm 是作为独立的可执行文件提供的,因此即使系统上没有预装 Node.js,您也可以运行它。

注入本地依赖(自 v6.20.0

您可以 “inject” 本地依赖项。 默认情况下,本地依赖项被符号链接至 node_modules。但有了这个新功能,你可以指示 pnpm 硬链接包内的文件。

改进了 peerDependency 问题的报告(自 v6.24.0

PeerDependency 问题曾经被打印为纯文本,很难理解。 它们现在都分组并打印在一个很好的层次结构中。

竞争

Yarn

Yarn 在 v3.1 添加了 pnpm 链接器。 因此 Yarn 可以创建一个类似于 pnpm 创建的 node_modules 目录结构。

此外,Yarn 团队计划实现内容可寻址存储,以提高磁盘空间效率。

npm

Npm 团队决定也采用 pnpm 使用的符号链接的 node_modules 目录结构(相关 RFC)。

Others

用 Zig 编写的 Bun 以及 Volt 都声称比 npm/Yarn/pnpm 更快。 我还没有对这些新的包管理器进行基准测试。

未来的计划

更快,更好,最好。