pnpm

26 阅读2分钟

zhuanlan.zhihu.com/p/683757720

1. PNPM 是什么?

PNPM 是一个快速、高效的包管理器,可用于管理 Node.js 项目的依赖项。它旨在解决 NPM 和 Yarn 等现有包管理器的一些痛点,例如:

  • 磁盘空间浪费: 同一个依赖项的不同版本可能会被重复安装,浪费磁盘空间。
  • 安装速度慢: 安装依赖项需要下载和复制大量文件,导致安装速度慢。
  • 幽灵依赖: 依赖项的依赖项可能会被意外安装,导致项目中出现不必要的依赖项。

PNPM 通过以下方式解决这些问题:

  • 内容寻址存储: 所有依赖项都存储在一个全局存储中,并根据其内容进行寻址。这意味着同一个依赖项的不同版本只会存储一份,从而节省磁盘空间。
  • 硬链接: 依赖项不会被复制到项目目录中,而是使用硬链接从全局存储中链接到项目目录。这可以大大提高安装速度。
  • 扁平化依赖树: PNPM 会将依赖项树扁平化,消除幽灵依赖。

2. 使用 PNPM 相对于 NPM 的优点

使用 PNPM 相对于 NPM 有以下优点:

  • 节省磁盘空间: PNPM 可以节省大量磁盘空间,特别是在项目使用了大量依赖项的情况下。
  • 提高安装速度: PNPM 的安装速度比 NPM 快很多,特别是在冷启动的情况下。
  • 消除幽灵依赖: PNPM 可以消除幽灵依赖,使项目更加清晰易管理。
  • 支持多包仓库: PNPM 支持多包仓库,方便管理多个项目之间的依赖关系。

3. 安装

PNPM 可以通过以下方式安装:

npm install -g pnpm

4. PNPM 与 NPM 有何不同?

PNPM 与 NPM 的主要区别在于:

  • 存储方式: PNPM 使用内容寻址存储来存储依赖项,而 NPM 将依赖项存储在项目目录中。
  • 链接方式: PNPM 使用硬链接来链接依赖项,而 NPM 将依赖项复制到项目目录中。
  • 依赖树: PNPM 会将依赖项树扁平化,而 NPM 保持依赖项树的原始结构。

5. PNPM 应用

PNPM 可用于各种 Node.js 项目,包括:

  • Web 应用
  • 服务端应用
  • 命令行工具
  • 测试工具
  • 等等

以下是一些使用 PNPM 的示例:

# 安装一个依赖项
pnpm install express

# 安装多个依赖项
pnpm install express body-parser cookie-parser

# 安装指定版本的依赖项
pnpm install express@4.17.1

# 将依赖项添加到开发环境
pnpm install --dev mocha chai

# 将依赖项添加到全局环境
pnpm install -g pnpm-cli

总结

PNPM 是一个快速、高效的包管理器,可以为 Node.js 项目带来诸多优势。如果您正在寻找一种可以节省磁盘空间、提高安装速度并消除幽灵依赖的包管理器,那么 PNPM 是一个值得考虑的选择。