乐闻世界logo
搜索文章和话题

什么是 pnpm,它与 npm 和 Yarn 有什么区别?

3月6日 23:38

pnpm(Performant npm)是一个快速、节省磁盘空间的 JavaScript 包管理工具。

核心区别:

  1. 存储机制

    • pnpm:使用内容寻址存储,所有包存储在全局 store,项目中通过硬链接引用
    • npm/Yarn:每个项目都会复制一份 node_modules,占用大量磁盘空间
  2. 安装速度

    • pnpm:由于硬链接机制,第二次安装时速度极快
    • npm/Yarn:每次都需要重新下载或复制文件
  3. 依赖结构

    • pnpm:使用非扁平化的 node_modules 结构,通过符号链接创建严格的依赖树
    • npm/Yarn:使用扁平化结构,可能导致"幽灵依赖"问题
  4. 磁盘空间

    • pnpm:多项目共享同一份包,节省 70% 以上磁盘空间
    • npm/Yarn:每个项目独立存储,重复占用空间

示例对比:

bash
# npm 安装 npm install lodash # node_modules 中包含完整的 lodash 副本 # pnpm 安装 pnpm add lodash # node_modules 中只是指向全局 store 的硬链接

优势总结:

  • 更快的安装速度
  • 更少的磁盘占用
  • 更严格的依赖管理,避免幽灵依赖
  • 更好的 monorepo 支持
标签:PNPM