npm、yarn、pnpm 简单对比

177 阅读1分钟

安装依赖

npm

npm i # all dependencies
npm i pkg # dependencies
npm i pkg -D # devDependencies
npm i pkg -g # global

npm i/install/add 均可

yarn 1.x

yarn # all dependencies
yarn add pkg # dependencies
yarn add pkg -D # devDependencies
yarn global add pkg # global

pnpm

pnpm i # all dependencies
pnpm add pkg # dependencies
pnpm add pkg -D # devDependencies
pnpm add pkg -g # global

特点

npm

npm is the world's largest software registry.

yarn 1.x

快速、可靠、安全的依赖管理工具。

  • 离线模式
  • 依赖关系确定
  • 最大限度地利用网络资源
  • 保持相同的包管理流程
  • 重试机制
  • 扁平模式

pnpm

快速的,节省磁盘空间的包管理工具(通过软链和硬链

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

当使用 npm 或 Yarn 时,如果你有 100 个项目使用了某个依赖(dependency),就会有 100 份该依赖的副本保存在硬盘上。而在使用 pnpm 时,依赖会被存储在内容可寻址的存储中。

同一依赖项的不同版本,只会将不同版本间有差异的文件添加到仓库。

所有文件都会存储在硬盘上的某一位置,跨项目共享同一版本的依赖。

  • 创建非扁平化的 node_modules 文件夹

使用 npm 或 Yarn Classic 安装依赖项时,所有包都被提升到模块目录的根目录。

默认情况下,pnpm 使用软链的方式将项目的直接依赖添加进模块文件夹的根目录。

虽然依赖树的层级更深了,但是整个目录结构的层级依然是扁平的。pnpm 通过软链接,把扁平的数据结构变成了树的数据结构。