Skip to main content

包管理工具

目前主流

以下三个也是eslint 提示安装项

  • npm
  • yarn
  • pnpm

早期npm 没有平铺node_modules结构,导致嵌套地狱。(yarn直接平铺) 自npm3开始,npm平铺node_modules结构。

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

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

pnpm的最大优势 节省硬盘空间

功能pnpmyarnnpm
工作空间支持(monorepo)✔️✔️✔️
隔离的 node_modules✔️ - 默认✔️
提升的 node_modules✔️✔️✔️ - 默认
自动安装 peers✔️ - 通过 auto-install-peers=true✔️
Plug'n'Play✔️✔️ - 默认
零安装✔️
修补依赖项✔️✔️
管理 Node.js 版本✔️
有锁文件✔️ - pnpm-lock.yaml✔️ - yarn.lock✔️ - package-lock.json
支持覆盖✔️✔️ - 通过 resolutions✔️
内容可寻址存储✔️
动态包执行✔️ - 通过 pnpm dlx✔️ - 通过 yarn dlx✔️ - 通过 npx
Side-effects cache✔️