- pnpm
可以理解为 performant npm 缩写,速度快、节省磁盘空间、支持monorepo,并且更严格,无幽灵依赖问题
硬链接:共享同一个文件,一个文件系统中的多个文件名指向同一个数据块
软链接:相当于创建快捷方式,存储目标文件的路径
// 只会在node_modules下找axios,解决了幽灵依赖问题
const axios = require("axios");
node_modules/
├── axios(符号链接,即软链接) -> .pnpm/axios@版本号/node_modules/axios
└── .pnpm/
├── axios@版本号/
│ └── node_modules/
│ ├── axios/ (硬链接) -> .pnpm store
│ └── form-data (软链接)
└── form-data@版本号/
- npm
npm (node package manager),默认集成,是 Node 的官方包管理工具,缺点是安装速度慢、存在幽灵依赖问题。
在 npm3.x 版本之前,npm 使用的是嵌套依赖管理方式,即每个包都有其自己的依赖树。这种方式可能导致依赖冗余和版本冲突的问题,使得项目变得复杂且难以维护。为了解决 npm 包依赖冗余和版本冲突的问题,从 npm 3.x 版本开始,npm 采用了扁平化的包管理方式。扁平化的管理方式将所有依赖项直接安装在项目的根目录下,避免了嵌套的依赖树,但随之也带来了幽灵依赖的问题。
所谓幽灵依赖,指由其他依赖项间接引入的,而不是直接在项目中声明的。
- yarn
引入锁定文件 yarn.lock,校验和机制(哈希算法)来确保下载的包的完整性和安全性。缺点是同样存在幽灵依赖问题。
只是个人小记录,并不详细