认识
一、认识
PNPM(Performant Node Package Manager)
是一个用于管理 Node.js
项目依赖的包管理工具。它被设计用于替代传统的 NPM(Node Package Manager)
,以提供更高效的依赖管理和更好的性能。PNPM
的核心理念是通过 符号链接 和 全局存储 来优化 依赖管理,解决 NPM
在大型项目中常见的性能和管理问题。
二、核心
2.1 硬链接
硬链接(Hard Link
) 是在文件系统中创建的指向某个文件数据块的引用。与符号链接不同,硬链接是文件系统级别的链接,它们指向相同的物理数据块,而不是文件的路径。因此,硬链接是对文件内容的直接引用,而符号链接是对文件路径的引用。
PNPM
使用硬链接来提高性能和节省磁盘空间。具体来说,PNPM
在安装依赖时,会在项目的 node_modules
目录中创建指向全局存储中实际包文件的硬链接。这样做的好处是避免了重复下载和存储相同的包内容,同时提高了文件访问的效率。
PNPM
硬链接的工作原理
-
全局存储: 当第一次下载某个依赖包时,
PNPM
会将其存储在全局存储目录中(通常在~/.pnpm-store
)。 -
创建硬链接: 在项目的
node_modules
目录中,PNPM
会创建指向全局存储中相应包文件的硬链接。这些硬链接指向相同的数据块,因此不会占用额外的磁盘空间。 -
依赖结构: 使用硬链接后,项目的
node_modules
目录中依赖项看起来像是独立文件,但实际上它们共享相同的数据块。
PNPM
硬链接优点
-
节省磁盘空间: 相同版本的包只会在全局存储中保存一次,通过硬链接共享这些包,避免重复存储,节省了磁盘空间。
-
提高文件访问速度: 由于硬链接是文件系统级别的引用,文件访问速度比符号链接更快。
-
一致的数据管理: 修改硬链接或原文件,数据同步更新,确保了一致性。