npm、yarn、pnpm —— 再谈幽灵依赖
npm、yarn、pnpm —— 再谈幽灵依赖
《工欲善其事,必先利其器》
既然点进来了,就看下去吧,希望你有不一样的收获。
一、什么是幽灵依赖?
之前我们讲过,“幽灵依赖” 就是:未在项目 package.json
中声明的依赖,但在项目中依然可以意外的被正确引用。
原因就是 npm v5
只后,把所有的依赖全部拍平整理到项目的 node_modules
之中,才导致了上面说的这种情况。(yarn
也一样,都存在幽灵依赖)
看之前文章的图片。我们可以看到,在 express
的 package.json
中,他声明的依赖项并不是项目的依赖项,但也被拍平到 node_modules
文件夹中。所以有时候我们可能会不小心引用到这个依赖,开发者会误判,以为是项目自己的依赖,导致某些玄学的报错。
二、pnpm 怎么处理依赖?
归功于最重要的一点,pnpm
是通过自动硬链接 (hard link) 和软链接 (sybolic link) 来实现 npm
模块的管理。
- 工作区内部(sybbolic link)
还是以 express
举例,在 node_modules
根目录只有一个 express
,并不像 npm
那样,把所有依赖都扁平化管理,而是通过软链的形式链接到 .pnpm
内部,再去详细管理依赖的版本。在 .pnpm
内部也是平铺的,但是是允许不同版本的依赖平铺在一个层级,同时对于 express
诸多依赖,也是直接软链到平铺的模块中。
- Global store(hard link)
通过对工作区内部的分析,可以看出都是通过软链接实现的,那硬链接是如何发挥作用的,现在我们来继续来看 .pnpm
目录,这个目录的一级文件,都是通过直接的硬链接,链接到全局的存储空间,从而可以实现多个项目共用一份依赖。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfgjgc
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13