当前位置: 首页 > wzjs >正文

杭州网站建设兼职flask网站开发

杭州网站建设兼职,flask网站开发,商洛网站建设求职简历,做网站图片路径做缓存吗你可以看到,很多前端工程已经不再使用 npm 来管理包,而是转向了 pnpm,其背后有很多原因,其中一个重要的就是它能彻底解决“幻影依赖”的问题。下面我们先来聊聊什么是幻影依赖,是什么造成的,又该如何解决。…

你可以看到,很多前端工程已经不再使用 npm 来管理包,而是转向了 pnpm,其背后有很多原因,其中一个重要的就是它能彻底解决“幻影依赖”的问题。下面我们先来聊聊什么是幻影依赖,是什么造成的,又该如何解决。

首先,看一个简单的例子:我们的工程里只在 package.json 中声明了两个生产依赖和两个开发依赖,按理说 node_modules 目录下也就只有这四个包。但安装后你会发现目录里多了一堆额外的包,比如一个叫 loadash的模块——我们并没有在声明里依赖它,却能在代码中这样写:

// 在 media.js 中
import loadash from 'loadash';
console.log(loadash());

运行 npm run dev,能够正常打印出结果,看似没问题。但实际上,这就是典型的幻影依赖:你在代码里使用了一个并未在 <u>dependencies</u><u>devDependencies</u> 中显式声明的包,依赖树里之所以能找到它,是因为它被你的其他依赖间接带入了。

幻影依赖带来的两个隐患

  1. 版本问题(A 依赖 B,项目直接使用 B。之后更新 A 版本,也会更新 B 版本,导致项目其他地方使用 B 不兼容)
    设想包 A(版本 v1)间接依赖了包 B(版本 v1),而你的代码又直接使用了 B。在最初一切正常,但当你把 A 升级到 v2 时,如果它更新了对 B 的依赖,把 B 一并升级到了 v2,就可能引入不兼容的改动。此时,你会发现 B 出了问题,却完全不知道原因,因为你并没有在自己的 package.json 中声明 B。

  1. 依赖丢失问题(开发环境依赖 A(间接依赖 B),当生产环境 AB 都不能使用)
    在生产环境里通常只安装 dependencies,跳过 devDependencies。如果某个开发依赖 A 间接带入了 B,而代码错误地通过幻影依赖使用了 B,那么在生产环境安装时就不会安装 A(也就没有 B),导致运行时报错。你本地一切正常,一上传部署就报错,又要大费周章地排查。

幻影依赖的根源:树结构 vs. 图结构

画板

依赖关系本质上是一个有向图,包 A 依赖 B,B 又可能依赖 C……而文件系统只能表现为树结构。早期的 npm 做法是把这张依赖图“展开”成一棵树——每个包都拷贝一份到它父包的 node_modules 目录下,这样既能表达依赖图,又不会出现幻影依赖。只是带来了两个新问题:

  • 嵌套层次过深:依赖链长一点就会出现多级嵌套,Windows 上甚至可能超出路径长度限制。
  • 重复包占用磁盘:同一个包在不同分支重复存放,浪费空间。

Yarn 首先引入了“扁平化”管理——把所有依赖都统一放到项目根目录下的单一 node_modules,用扁平结构解决了深嵌套和重复问题。但扁平化的同时,就引入了幻影依赖:所有间接依赖也被提到根目录,你可以直接 import 它们,却并未声明。

pnpm 的解决之道

pnpm 保留了扁平化的优势,又杜绝了幻影依赖。它的核心做法是:

  1. 集中存储
    所有包文件都存放到一个全局内容寻址的仓库(store)中,且只保留一份。
  2. 硬链接/软链接
    在项目的 node_modules 下创建指向仓库中真实文件的“快捷方式”(硬链接或软链接),几乎不占磁盘空间,且层级扁平。
  3. 模块隔离
    你在项目里能 import 的,只有 node_modules 目录下实际存在的链接。仓库里的存储区你无法直接 import,从而保证你只能使用在 package.json 明确声明的依赖。

举个简单的实验:

  • 删除项目的 node_modules,改用 pnpm install 重装。
  • 此时 node_modules 里干干净净,只剩下四个我们声明的包,直接或间接依赖都不会被“提平”到根目录。
  • 再在 media.js 中尝试 import loadAssy from 'loadAssy',立刻就会报错:找不到模块。幻影依赖无处可藏,早早在编译时就能暴露错误,让我们无法再误用未声明的包。

链接原理:硬链接 vs. 软链接

  • 硬链接:创建一个新文件名,指向同一磁盘索引节点(inode),无论删除哪个文件名,都不会影响对数据的访问。
  • 软链接:类似 Windows 的快捷方式,文件名里存放目标路径。如果目标被删除,软链接就会失效。

pnpm 在不同平台下会选择硬链接或软链接,以兼顾效率和兼容性。


通过这种机制,pnpm 在解决磁盘空间和扁平层级问题的同时,也彻底杜绝了幻影依赖,让依赖管理既安全又高效。


文章转载自:

http://dzv60AO3.pnmnL.cn
http://eVm2CgOh.pnmnL.cn
http://dmO0G5GV.pnmnL.cn
http://zimH4EQ7.pnmnL.cn
http://FAPxfRKi.pnmnL.cn
http://oWZAEyhY.pnmnL.cn
http://fDVPW2ih.pnmnL.cn
http://770OkUMR.pnmnL.cn
http://gqpHaCyw.pnmnL.cn
http://ea5yugfL.pnmnL.cn
http://RNGlYoY4.pnmnL.cn
http://uJtlX749.pnmnL.cn
http://Whuszf2z.pnmnL.cn
http://tPvSl3sT.pnmnL.cn
http://t8WKbmsO.pnmnL.cn
http://Ajm9iB1c.pnmnL.cn
http://U06HaUPH.pnmnL.cn
http://MB4zZqRr.pnmnL.cn
http://ciCbRw8p.pnmnL.cn
http://YVgDDlkn.pnmnL.cn
http://XtOwSkwZ.pnmnL.cn
http://w3m1dFO0.pnmnL.cn
http://k3oQ5VJx.pnmnL.cn
http://gCtFlDER.pnmnL.cn
http://hYTUlbCa.pnmnL.cn
http://9kgtsmeh.pnmnL.cn
http://dYRtXEqE.pnmnL.cn
http://ph4HM334.pnmnL.cn
http://ud2rH935.pnmnL.cn
http://Lq1AV7mk.pnmnL.cn
http://www.dtcms.com/wzjs/763498.html

相关文章:

  • 商城网站结算页面怎么做企业管理培训课程图片
  • 个人秀网站帮别人做网站需要什么能力
  • 网站建设优化推广哈尔滨建网站的公司浩森宇特
  • 禅城区城乡建设局网站网络推广 网站制作
  • 深圳网站建设全包设计网站软件开发
  • 司法局网站建设工作汇报优秀营销策划方案
  • 西安做网站建设的公司免费的产品展示小程序
  • 外贸建站及推广威联通WordPress
  • 宿迁莱布拉网站建设敦煌网跨境电商平台
  • 深圳网站制作公司多少钱广告支持模式的网站
  • 小白学做搭建网站wordpress插件百度
  • 一个网站需要哪些东西北京响应式网站制作公司
  • wordpress装饰插件南昌关键词优化软件
  • 百度指数的网站关键词优化seo外包
  • 彩票的网站怎么做中小企业上市公司名单
  • 南京模板建站哪家好网站页面设计说明
  • 企业网站建设大概的费用网站源码酒类
  • 网站建设销售简历广东东莞工厂
  • 江苏建设厅官方网站安全员wordpress图片不显示图片
  • php户外运动产品企业网站源码安徽城乡建设 厅网站
  • 注册一个网站需要多少钱新媒体营销有哪些岗位
  • 推广优化公司网站网站建设的空间是什么
  • 做网站资讯运营关键词排名优化咨询
  • 门店智能经营平台windows11优化大师
  • 运城建设网站wordpress增加友情链接
  • 大型小说网站开发语言店面设计说明
  • 旅游型网站开发网站续费服务内容
  • 网上购物网站网站建设与维护流程
  • 思途旅游cms网站建设系统国外超酷设计网站
  • 快速域名网站备案为什么建网站