跳到主内容
Version: 5.x

动机

节约磁盘空间并提升安装速度

在使用 npm 或 Yarn 时,如果你有100个项目使用了依赖(dependency),你就会在硬盘上存储100个依赖的副本。 在使用 pnpm 时,依赖会被存储在内容可寻址的地方,所以:

  1. 如果你依赖于不同版本的依赖(dependency),那么只需将差异的文件添加到存储中心。 例如,如果它有100个文件,而新版本只改变了其中1个文件。那么 pnpm update 只会向存储中心添加1个新文件,不会仅仅因为单一的改变而克隆整个依赖。
  2. 所有文件都会存储在硬盘上的同一位置。 当多个包(package)被安装时,所有文件都会从同一位置创建硬链接,不会占用额外的磁盘空间。 这允许你跨项目地共享同一版本的依赖。

最终你节省了大量与项目和依赖成比例的硬盘空间,并且拥有更快的安装速度!

创建非扁平化的 node_modules 文件夹

当使用 npm 安装依赖时,所有的依赖都会被提升到模块的根目录。 因此,项目可以访问到未被添加进 当前 项目的依赖。

pnpm 使用软链的方式将项目的直接依赖添加进模块文件夹的根目录。 如果你想了解 pnpm 关于 node_modules 结构设计的更多细节,以及为什么它在 Node.js 生态成为了后起之秀,请参考: