pnpm原理:软连接、硬连接

pnpm常用命令 意思就是我现在的node版本不是和下载的pnpm的版本所以对应 ,可以去官网查看版本对应。可实现 nvm、n 等 node 版本管理工具,安装并切换 node.js 版本的功能。4.运行脚本(按实际 package.json 配置文件为准)下载pnpm,但是出现了。6.管理node环境。 阅读详情

在这里插入图片描述

如何节省的磁盘空间

  • 符号连接
  • 硬连接

在讲上面两个概念之前,问几个问题:

  • 我们电脑上删除的文件可以恢复吗?(数据恢复软件/专业做数据恢复的人)
  • 为什么可以恢复,什么情况下不能恢复(恢复失败)
  • 电脑上的文件是如何存放的?

概念

要彻底理解pnpm是怎么做的,需要有一些操作系统知识

  1. 文件的本质

在操作系统中,文件实际上是一个指针,只不过它指向的不是内存地址,而是一个外部存储地址(这里的外部存储可以是硬盘、U盘、甚至是网络)
在这里插入图片描述
当我们删除文件时,删除的实际上是指针,因此,无论删除多么大的文件,速度都非常快。
在这里插入图片描述

  1. 文件的拷贝

如果你复制一个文件,是将该文件指针指向的内容进行复制,然后产生一个新文件指向新的内容

在这里插入图片描述

  1. 硬链接 hard link

硬链接的概念来自于 Unix 操作系统,它是指将一个文件A指针复制到另一个文件B指针中,文件B就是文件A的硬链接

在这里插入图片描述

通过硬链接,不会产生额外的磁盘占用,并且,两个文件都能找到相同的磁盘内容

硬链接的数量没有限制,可以为同一个文件产生多个硬链接

创建硬链接

# 创建文件夹
mkdir my-pnpm
# 创建文件
touch abc.txt
# 创建文件硬链接: ln [-s] old_path new_path
ln abc.txt 123.txt

windows Vista操作系统开始,支持了创建硬链接的操作,在cmd中使用下面的命令可以创建硬链接

mklink /h 链接名称 目标文件

由于文件夹(目录)不存在文件内容,所以文件夹(目录)不能创建硬链接

由于种种原因,在windows操作系统中,通常不要跨越盘符创建硬链接

  1. 符号链接 symbol link

符号链接又称为软连接,如果为某个文件或文件夹A创建符号连接B,则B指向A。
在这里插入图片描述

创建软链接

ln -s abc.txt cba.txt

node环境对硬链接和符号链接的处理

硬链接:硬链接是一个实实在在的文件,node不对其做任何特殊处理,也无法区别对待,实际上,node根本无从知晓该文件是不是一个硬链接

符号链接:由于符号链接指向的是另一个文件或目录,当node执行符号链接下的JS文件时,会使用原始路径。

# 创建a文件夹
mkdir a
# 创建 a.js
touch a.js
# 在a.js中打印所在路径: console.log(__dirname)

# 创建 a.js文件硬链接
ln a/a.js b.js
# 运行b.js

# 创建a文件夹软链接aa
ln a aa
# 运行aa中a.js

pnpm原理

pnpm使用符号链接和硬链接来构建node_modules目录

下面用一个例子来说明它的构建方式

假设两个包a和b,a依赖b:

在这里插入图片描述

假设我们的工程为proj,直接依赖a,则安装时,pnpm会做下面的处理

  1. 查询依赖关系,得到最终要安装的包:a和b
  2. 查看a和b是否已经有缓存,如果没有,下载到缓存中,如果有,则进入下一步
  3. 创建 node_modules 目录,并对目录进行结构初始化

在这里插入图片描述

  1. 从缓存的对应包中使用硬链接放置文件到相应包代码目录中

在这里插入图片描述

  1. 使用符号链接,将每个包的直接依赖放置到自己的目录中

在这里插入图片描述

这样做的目的,是为了保证a的代码在执行过程中,可以读取到它们的直接依赖

  1. 新版本的pnpm为了解决一些书写不规范的包(读取间接依赖)的问题,又将所有的工程非直接依赖,使用符号链接加入到了 .pnpm/node_modules 中

在本例中好像没有必要,但是如果b依赖c,a又要直接用c,这种不规范的用法现在pnpm通过这种方式支持了。

但对于那些使用绝对路径的奇葩写法,可能永远也无法支持

  1. 在工程的node_modules目录中使用符号链接,放置直接依赖

在这里插入图片描述

  1. 完成
深入探讨npm、Yarn、pnpm和npx之间的区别 本文深入探讨了npm、Yarn、pnpm和npx这四种常见的Node.js包管理工具。通过对比它们的使用场景、优缺点,帮助开发者选择适合自己项目的包管理器。npm是传统且广泛使用的工具,Yarn以快速和确定性著称,pnpm则以高效磁盘使用和并行安装见长,而npx则适用于临时执行包命令。 阅读详情

相关推荐

npm、cnpm、pnpm和yarn使用(官网、安装、命令行、上传自己的包、包版本号详解、更新卸载包、查看所有版本、同等依赖peer、可选依赖optional)

目录npm官网npm install packageNamenpm i packagename@版本号安装git上发布的包npm ci注意(对比npm i)npm outdatednpm updatenpm init -y npm listnpm list | grep packageNamenpm install --productionnpm view packagename versionsnpm config get registrynpm config set registry https://r

AIWWY的博客 8659

pnpm:基础使用 / 积累

PNPM是一款高性能的npm替代工具,相比npm/yarn在速度和磁盘空间利用上显著优化。它采用内容寻址存储和符号链接技术,支持monorepo架构,并通过独特的依赖管理策略提升安全性。安装简单(npm i pnpm -g),支持镜像源切换和版本升级。使用中若遇到依赖解析问题,可通过配置.npmrc文件解决。PNPM还提供workspace功能实现单一代码库管理,是当前最先进的包管理工具之一。

snow的博客 6万+

微前端 前置知识2--- monorepo架构

我们采用的是微前端一个主应用,和多个子应用,我们肯定不会一个一个去install安装依赖,太傻了,我们采用monorepo 架构 一次install 即可安装完成。第一步需要安装pnpmpnpm内置了对单个代码仓库包含多个软件包的支持,是monorepo架构模式的不二速选。

每天都要努力学习哦~~ 2662

pnpm 基本详细使用教程(安装、卸载、使用、可能遇到的问题及解决办法)

pnpm 全称 performant npm,意思为 高性能的 npm。pnpm 由 npm/yarn 衍生而来,解决了 npm/yarn 内部潜在的 bug,极大的优化了性能,扩展了使用场景。被誉为 最先进的包管理工具。特点:速度快、节约磁盘空间、支持 monorepo、安全性高、创建一个非扁平的 node_modules 目录。pnpm 相比较于 yarn/npm 这两个常用的包管理工具在性能上也有了极大的提升,根据目前官方提供的benchmark。

蓝雨天的博客 13万+

保姆级教程:用Kalibr搞定Intel D435i三目(RGB+双目)相机联合标定,附完整ROSbag录制避坑指南

本文详细介绍了如何使用Kalibr工具对Intel D435i三目相机(RGB+双目)进行高精度联合标定,包括硬件准备、ROSbag录制技巧、Kalibr标定实战及结果验证。特别针对实际工程中的常见问题提供了解决方案,帮助开发者提升SLAM和三维重建等应用的精度。

weixin_42524762的博客 405

NRF24L01学习操作教程(二)——NRF实现一对一,一对多通讯

以上内容详细介绍了,使用NRF24L01实现1对1单向通讯、1对1双向通讯、1对多双向通讯。

Joseph Wen的博客 7388

pnpm的原理和优势(monorepo)

硬连接:存储的物理磁盘上该文件的地址。比如这个文件是一个硬连接,通过它可以找到物理磁盘上该 mp4 数据的地址。软件连:是一个引用。它存储的是硬连接的地址。简而言之:它保存的是文件路径。如果将原文件删除,通过软链接无法再次打开原文件。

wtswts1232的博客 1306

经典点云配准算法:迭代最近点算法ICP(Iterative Closest Point)

迭代最近点算法,又名为 ICP(Iterative Closest Point)算法。 (1)ICP算法对初始值的依赖比较大,具体的配准过程中,如何选择初始值是一个问题,可以使用轮式里程计、imu预积分或其它先验的配准结果。 (2)ICP迭代次数过多,实际工程中需要考虑到其实时性的优化问题。 (3)迭代终止的阀值的设置也是需要考虑的点,可以考虑自适应阀值的方法。 (4)关于寻找最近点可以使用kdtree进行临近搜索。

qq_35102059的博客 1万+

pnpm 是凭什么对 npm 和 yarn 降维打击的

pnpm 最近经常会听到,可以说是爆火。本文我们梳理了下它爆火的原因:npm2 是通过嵌套的方式管理 node_modules 的,会有同样的依赖复制多次的问题。npm3+ 和 yarn 是通过铺平的扁平化的方式来管理 node_modules,解决了嵌套方式的部分问题,但是引入了幽灵依赖的问题,并且同名的包只会提升一个版本的,其余的版本依然会复制多次。

发果叁 413

deepfake detection数据集

最全Deepfake数据集总结,包含各个数据集下载链接: https://github.com/deepfakeinthewild/deepfake_in_the_wild Dataset name Download Generate method Deepfake videos Actors Deepfake-TIMIT low download De...

where_is_horse的博客 1万+

IC617多线程仿真卡死?手把手教你用TigerVNC替换解决ADE XL Explorer问题(附Manjaro/Centos8实测)

本文针对IC617在Manjaro、CentOS 8等高版本Linux系统中运行ADE XL Explorer进行多线程仿真时出现的卡死问题,提供了详细的诊断与解决方案。文章指出问题根源在于软件内置的旧版VNC组件不兼容,并手把手指导用户通过使用TigerVNC替换原组件来彻底解决,附有在Manjaro和CentOS 8系统上的实测步骤与验证方法。

hill8的博客 774

Mac上使用ln指令创建软链接、硬链接

在Mac、Linux和Unix系统中,软连接(Symbolic Link)和硬连接(Hard Link)是两种不同的文件链接方式。

u014165391的博客 7058

用 SAP HANA SDA 访问 PostgreSQL:从可行性到落地实践的完整指引

摘要:SAP HANA可通过SDA/SDI技术访问PostgreSQL数据库,支持数据虚拟化和实时复制。主要实现路径包括:1)使用Camel JDBC适配器创建虚拟表进行联邦查询;2)利用PostgreSQL Log Reader适配器实现变更数据捕获(CDC)。实施时需配置Data Provisioning Agent,注意权限和网络要求。官方文档指出,通过SDI+DP Agent的方式比直接SDA连接更稳定可靠。虚拟化查询时,HANA会自动将SQL下推到PostgreSQL执行,优化性能。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 254

浅谈pnpm & (软链接 与 硬链接)

pnpm、前端、yarn、npm、硬链接、软链接、文件系统

weixin_42445439的博客 5984

芒果YOLOv5改进05:损失函数IoU 篇之Repulsion Loss:原创改进损失函数 Repulsion:解决目标遮挡场景下检测,为解决密集人群检测中遮挡设计的损失函数,打造高效检测器涨点

YOLOv5改进代码实践|结合Repulsion 解决目标遮挡场景下检测🚀

包括YOLOv5、YOLOv7、YOLOv8等模型改进 4565

实操微信支付,适合第一次接通微信支付的同学

我的实际操作命令如下:就会生成图3中多出来的file文件夹,/Users/camel/cert/xxxxxx_cert/file/wechatpay_5A4xxxxxxxxxx9.pem,wechatpay_xxxxx5A4849E9.pem就是微信支付平台证书,也是程序真正需要的。•注意:我的操作说明,我是把下载好的 CertificateDownloader.jar 文件,放在了解压证书的目录里(图3)。//下面的静态参数要仔细看下面的解释,否则只会调用别人写好的方法,压根学不会0-1接入微信支付。

wjianwei666的专栏 525

读取txt原理_pnpm原理

人生不止有技术链接每一位开发者,让编程更有趣儿!关注pnpm原理「想要理解pnpm是怎么做的,需要一些操作系统的知识」1、文件的本质在操作系统中,文件实际上是一个指针,只不过它指向的不是内存地址,而是一个外部存储地址(这里的外部存储可以是硬盘、U盘、甚至是网络)当我们删除文件时,删除的实际上是指针,因此,无论删除多么大的文件,速度都非常快。像我们的U盘、硬盘里的文件虽然说看起来已经删除...

weixin_36255898的博客 314

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

相比于 npm 和 yarn,pnpm的优势是什么?

npm2 是通过嵌套的方式管理 node_modules 的,会有同样的依赖复制多次的问题。npm3+ 和 yarn 是通过铺平的扁平化的方式来管理 node_modules,解决了嵌套方式的部分问题,但是引入了幽灵依赖的问题,并且同名的包只会提升一个版本的,其余的版本依然会复制多次。pnpm 则是用了另一种方式,不再是复制了,而是都从全局 store 硬连接到 node_modules/.pnpm,然后之间通过软链接来组织依赖关系。

前端小白的博客 1042

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

nodejs - pnpm解决幽灵依赖

PNPM是一款高效的包管理工具,具有速度快、节省磁盘空间等优势。其核心原理是通过三阶段安装(依赖解析、目录结构计算、链接依赖项)和硬链接/符号链接技术,避免重复安装依赖,显著提升安装速度。PNPM采用扁平化node_modules结构,解决幽灵依赖问题,确保依赖完整性。相比传统包管理器,PNPM通过内容可寻址存储和差异化版本更新,大幅减少磁盘占用。安装使用简单,支持全局或项目级安装,提供更新、卸载等常用命令,是现代化前端开发的理想选择。

尽日寻春不见春,芒鞋踏遍陇头云。归来笑拈梅花嗅,春在枝头已十分。 1122

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

pnpm vs npm 和 yarn

pnpm vs npm 和 yarn 的对比

yadang2的博客 243

node_modules困境以及pnpm

问题:node_modules的设计虽然能满足大部分的场景,但是其仍然存在着种种缺陷由于每个项目可能依赖成百上千个小模块,node_modules 目录的体积往往非常庞大,动辄几百MB甚至超过1GB。这不仅增加了存储负担,也影响了项目的克隆、备份和部署速度。pnpm 的机制对于 yarn 和 npm 来说是降维打击。包管理工具发展史,npm2 开始。

weixin_57301463的博客 2365

【pnpm】从了解到应用

# 包管理器简史 ## npm 3 之前 node_modules 结构是有序的 假设有如下的依赖项: ``` . ├── package-a │ └── lodash ├── package-b │ └── lodash ├── package-c │ └── lodash └── package-d └── lodash ``` node_modules 结构如下: ``` node_modules ├── package-a │ └── node_modules

Superman_H的博客 4468

pnpm对npm及yarn降维打击详解

目录。

百创科技 1183
上一篇: 浏览器存储cookie、webStorage、IndexedDB
下一篇: tailwindcss 最简单的使用方式
前端蜗牛君
博客等级 码龄10年 274粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值