首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >pnpm >pnpm 的 store 全局存储目录是如何组织的?

pnpm 的 store 全局存储目录是如何组织的?

词条归属:pnpm

1. 虚拟存储与内容寻址存储的关系

pnpm 的存储体系由两层构成:底层是内容寻址存储(CAS),保存所有已下载文件的物理副本;上层是虚拟存储(Virtual Store),为每个项目维护一套符合 Node.js 模块解析算法的目录结构。默认情况下,每个项目在 node_modules/.pnpm 中拥有独立的虚拟存储投影,虚拟存储内的文件通过硬链接指向 CAS。pnpm v11 起,全局虚拟存储(Global Virtual Store)对 pnpm dlx 和全局安装的包默认启用;普通项目如需启用,可在配置文件中设置 enableGlobalVirtualStore: true。全局虚拟存储可将多个项目的虚拟存储合并为单一共享位置,进一步减少重复的目录结构开销。

2. store 的版本化管理

store 目录采用版本化命名(如 v10、v11),由 STORE_VERSION 常量控制。这种设计确保存储格式变更时能够平滑迁移,不同版本的 pnpm 可以识别并兼容对应格式的 store。用户可通过 pnpm store path 命令查询当前激活的 store 路径,通过 pnpm store status 检查 store 完整性,通过 pnpm store prune 清理未被引用的孤立包。

3. 全局包的隔离安装

pnpm v11 起,全局安装的包(pnpm add -g)采用隔离安装模式。每个全局安装组拥有独立的目录,包含自己的 package.json、pnpm-lock.yaml 和 node_modules,组与组之间互不干扰。二进制文件的 shim 统一放置在 {pnpmHomeDir}/bin/ 中,指向对应安装组的 node_modules。

相关文章
HBase的数据存储是如何组织的?
HBase是一个分布式的NoSQL数据库,它的数据存储是通过表、行、列族和列限定符来组织的。下面我们将通过一个具体的案例来解释HBase的数据存储组织方式。
GeekLiHua
2025-01-21
1.5K0
我是如何组织 Go 代码的(目录结构 依赖注入 wire)
对于大多数 Gopher 来说,编写 Go 程序会直接在目录建立 main.go,xxx.go,yyy.go……
仁扬
2023-07-18
1.5K0
pnpm 会使用硬链接减少磁盘空间,那如何查看某个 package 硬链接到全局目录的什么位置?
find,在某个目录及所有子目录中的文件进行「递归搜索」,可根据文件的属性进行查找。
山月
2022-11-02
1.6K0
物理内存是如何组织管理的
内存管理,相比大家都听过。但是内存管理到底是做什么呢?这就得从计算机刚出来的时候说起。计算机刚出来的时候内存资源很紧张,只有几十K,后来慢慢的到几百K,到周后来的512M,再到现在的几个G。真是因为内存资源的不足,在计算机的整个过程中衍生出各种各样的内存管理方法。
DragonKingZhu
2020-04-16
2.1K0
精读《pnpm》
pnpm 全称是 “Performant NPM”,即高性能的 npm。它结合软硬链接与新的依赖组织方式,大大提升了包管理的效率,也同时解决了 “幻影依赖” 的问题,让包管理更加规范,减少潜在风险发生的可能性。
黄子毅
2022-11-21
1.7K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券