内容可寻址存储是一种通过文件内容本身生成的哈希值来命名和访问数据的存储方式。pnpm 使用 SHA-512 哈希算法对每个文件的完整内容进行摘要,以哈希值作为文件在全局 store 中的唯一标识。相同内容的文件无论来自哪个包、出现在哪个项目中,都会生成相同的哈希值,因此只在全局 store 中存储一份。
pnpm 在用户目录下维护一个全局存储目录,默认位置因操作系统而异:Linux 为 ~/.local/share/pnpm/store,macOS 为 ~/Library/pnpm/store,Windows 为 %LOCALAPPDATA%\pnpm\store。存储目录内部按哈希值的前两位字符划分为 256 个子目录(00 至 ff),每个子目录内存放对应哈希前缀的所有文件。文件根据权限属性被区分为可执行文件、不可执行文件和索引文件三类,分别附加不同的路径后缀。pnpm v11 起,store 目录采用版本化命名(如 v11),由 STORE_VERSION 常量控制,底层使用 SQLite 索引提升性能。
当包版本升级时,pnpm 只会向 store 中新增有变化的文件,未改动的文件直接复用已有存储。例如某个包包含 100 个文件,新版本仅修改其中 1 个文件,则 store 中只新增这 1 个文件,其余 99 个文件继续共享。这种机制使得 pnpm 在频繁更新依赖的场景下仍能保持较低的磁盘开销和较快的安装速度。