表演npm. -High -performance npm.its口号是:
快速,磁盘有效的软件包管理器。
快速,可以节省磁盘空间的包装管理工具。
采用了一种嵌套安装方法。如下所示:
缺点:
这将取决于扁平:
缺点:
Inode的每个文件都有一个唯一的Inode,其中包含文件的元信息。访问文件时,相应的元信息将复制到内存以实现文件访问。
您可以通过STAT命令检查文件的元信息。
硬链接硬链路可以理解为相互指针。创建的硬链接指向源文件的inode。系统不能重新定义Inode。无论有多少硬链接,它们都指向相同的inode节点,这意味着当您修改源文件或链接文件时,您将同步修改它。EAVERNEW HARDLINK将增加节点的数量。只要节点的链接数量不零,该文件始终存在。无论您是否存在一个源文件,无论是存在一个文件,该文件就存在。
.pnpm中的每个文件都是来自内容可寻址存储的硬链接
软链路软链接可以理解为一个通道指针,独立文件和独立的inode。它总是指向源文件。删除源文件,软链接将失败。
带有软链接或硬链接的修改文件,其他硬链接或软链接和源文件将更改。在这里感到非常小心,尤其是在修改文件进行调试时,请记住还原,否则将在另一个项目中使用另一个项目。当它可能存在问题时
在项目根目录中的node_modules中
node_modules仅具有直接数据包,没有间接依赖的袋子。在.pnpm目录中,通过软链接
.pnpm
虚拟存储目录 - ,所有直接和间接依赖关系都链接到此目录。该目录是隔离并在同一模块的不同版本之间重复使用的。
店铺
PNPM在全局情况下通过存储存储所有Node_modules依赖关系,并将硬链路存储在.pnpm中。
当使用PNPM依赖于项目安装时,如果存在某个依赖SOTRE目录,则它将直接从商店目录到硬链接,以避免第二安装带来的时间消耗。目录,您将下载一次。
如果全球袋变得很大?如何使用PNPM商店容易使用,它提供了一个函数来删除某些不被全球项目引用的软件包。例如,有一个软件包axios@1.0.0.此袋已更新为1.0.1,然后商店中的1.0.0 Axios变成了未列出的包裹。执行易于将其删除的PNPM商店在商店中删除。
让我们看一下示意图:
我们的project.bar@1.0.0中有一个依赖项,也有一个依赖的foo@1.0.0。
我们现在可以使用NPM或纱线,如何更好地过渡到PNPM?还是会有任何问题?
迁移:
问题:
PNPM通过巧妙的硬链路 +软链接的组合完全意识到依赖树结构的node_modules,并严格遵循Node.js模块分析标准,解决了幻影依赖性和NPM Avatar的问题。?/.pnpm店的方式,在不同项目中安装的速度也将变得更快,并且还解决了磁盘空间职业的问题
原始:https://juejin.cn/post/710313960724391012