硬链接是操作系统层面的文件别名机制,多个目录项指向磁盘上的同一块数据(同一 inode)。pnpm 在安装依赖时,将全局 store 中的文件通过硬链接引入项目的 node_modules,而非复制文件内容。由于硬链接不占用额外磁盘空间,且删除任一链接不影响其他链接指向的原始数据,因此多个项目共享同一版本依赖时,磁盘上实际只存在一份物理文件。
在硬链接的基础上,pnpm 使用符号链接(symlink)搭建项目的依赖层级结构。项目的 node_modules 根目录下仅存放直接依赖的符号链接,间接依赖则被隔离在 .pnpm 虚拟存储目录中。符号链接指向 .pnpm 内对应包的实际位置,而 .pnpm 内的文件又通过硬链接指向全局 store。这种双层链接结构使得依赖图再深,文件系统的目录深度始终保持恒定。
传统包管理器(npm、Yarn Classic)采用扁平化提升策略,每个项目都在各自的 node_modules 中复制完整的依赖副本。若 100 个项目使用同一版本的 lodash,磁盘上便存在 100 份 lodash。pnpm 通过全局 store 与硬链接机制,使这 100 个项目共享同一份物理文件,实测可节省 50%~75% 的磁盘空间。