快盘下载:好资源、好软件、快快下载吧!

快盘排行|快盘最新

当前位置:首页软件教程电脑软件教程 → npm、yarn、pnpm-——-再谈幽灵依赖

npm、yarn、pnpm-——-再谈幽灵依赖

时间:2022-10-09 13:40:32人气:作者:快盘下载我要评论

npm、yarn、pnpm —— 再谈幽灵依赖

《工欲善其事;必先利其器》
既然点进来了;就看下去吧;希望你有不一样的收获。

npm、yarn、pnpm-——-再谈幽灵依赖

一、什么是幽灵依赖?

之前我们讲过;“幽灵依赖” 就是;未在项目 package.json 中声明的依赖;但在项目中依然可以意外的被正确引用。

原因就是 npm v5 只后;把所有的依赖全部拍平整理到项目的 node_modules 之中;才导致了上面说的这种情况。;yarn 也一样;都存在幽灵依赖;

看之前文章的图片。我们可以看到;在 expresspackage.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 目录;这个目录的一级文件;都是通过直接的硬链接;链接到全局的存储空间;从而可以实现多个项目共用一份依赖。

相关文章

  • Android端ReactNative环境搭建——下

    Android端ReactNative环境搭建——下,首先,babel.config.js是babel转换器的相关配置,因为es2015使用了一些高级语法,babel则是将这些高级语法转换成浏览器引擎能够识别的语法;因为rn端的代码执行的是js代码,而js代码是动态语言,它最令人恶心的一点是:它是不会报错的。而且有趣的一点是,我们使用npx命令初始化一个rn项目的时候,其实也是用yarn来下载相关的依赖的,因为初始化的工程有一个yarn.lock文件,这就是最好的见证。我们还是分两大部门来介绍;具体细节,...
  • Linux——全是OK无法打开图形化界面问题

    Linux——全是OK无法打开图形化界面问题,Linux软件更新后全是OK问题...

网友评论

快盘下载暂未开通留言功能。

关于我们| 广告联络| 联系我们| 网站帮助| 免责声明| 软件发布

Copyright 2019-2029 【快快下载吧】 版权所有 快快下载吧 | 豫ICP备10006759号公安备案:41010502004165

声明: 快快下载吧上的所有软件和资料来源于互联网,仅供学习和研究使用,请测试后自行销毁,如有侵犯你版权的,请来信指出,本站将立即改正。