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

杭州网站建设提供商南通网站推广公司哪家好

杭州网站建设提供商,南通网站推广公司哪家好,商城网站做推广,做网站的公司介绍文章目录 前言1. npm/yarn 现在还有幽灵依赖问题吗?2. pnpm 解决了幽灵依赖问题吗?3. pnpm 是如何解决的?举例说明 1. pnpm 的 node_modules 结构原理结构示意 2. 实际演示幽灵依赖的杜绝步骤1:初始化项目并安装依赖步骤2&#xf…

文章目录

  • 前言
      • 1. npm/yarn 现在还有幽灵依赖问题吗?
      • 2. pnpm 解决了幽灵依赖问题吗?
      • 3. pnpm 是如何解决的?
        • 举例说明
    • 1. pnpm 的 node_modules 结构原理
      • 结构示意
    • 2. 实际演示幽灵依赖的杜绝
      • 步骤1:初始化项目并安装依赖
      • 步骤2:在代码中引入未声明的依赖
      • 步骤3:运行代码
    • 3. 查看 pnpm 的 node_modules 结构
    • 4. 总结


前言

1. npm/yarn 现在还有幽灵依赖问题吗?

有。

  • npm(包括 v9)和 yarn(classic/berry)默认依然采用“扁平化 node_modules”结构。
  • 只要依赖被扁平化安装到顶层 node_modules,项目代码就可以直接 require/导入未在本项目 package.json 声明的依赖(即幽灵依赖)。
  • 只要依赖树发生变化(比如间接依赖被移除),你的代码就会因为找不到依赖而报错。

2. pnpm 解决了幽灵依赖问题吗?

pnpm 基本解决了这个问题。

  • pnpm 采用了“严格的 node_modules 隔离”机制(hoisting less,严格依赖树)。
  • 每个包只能访问自己 package.json 里声明的依赖,不能直接 require 间接依赖。
  • 如果你在代码里 require 了未声明的依赖,pnpm 安装后运行会直接报错(找不到模块)。

3. pnpm 是如何解决的?

  • pnpm 在 node_modules 下采用了“软链接+隔离”结构。
  • 每个包的 node_modules 只包含自己声明的依赖(通过 symlink 指向全局 store),不会自动把所有依赖都扁平化到顶层。
  • 这样,只有在 package.json 里声明的依赖才能被 require 到,未声明的依赖不会被自动暴露出来。
举例说明

假设你的 package.json 没有声明 moment,但代码里用了:

const moment = require('moment');
  • 用 npm/yarn 安装,如果有其他依赖间接依赖了 moment,代码可能能跑。
  • 用 pnpm 安装,运行时会直接报错:Cannot find module 'moment'

1. pnpm 的 node_modules 结构原理

  • pnpm 不像 npm/yarn 那样把所有依赖都“扁平化”到顶层 node_modules。
  • pnpm 会在项目的 node_modules 下为每个包建立一个“虚拟隔离环境”,每个包只能访问自己 package.json 里声明的依赖。
  • 具体实现方式是:pnpm 在 node_modules 里用符号链接(symlink)指向全局 store 里的真实包内容,并且只为声明的依赖建立链接。

结构示意

假设你的项目结构如下:

project/node_modules/.pnpm/react@18.1.0/lodash@4.17.21/react -> .pnpm/react@18.1.0/node_modules/reactlodash -> .pnpm/lodash@4.17.21/node_modules/lodashfooter/node_modules/react -> ../../../.pnpm/react@18.1.0/node_modules/react
  • .pnpm 目录存放所有真实包内容。
  • node_modules/react 是指向 .pnpm/react@18.1.0/node_modules/react 的符号链接。
  • 每个包(如 footer)自己的 node_modules 只包含自己声明的依赖的链接。

2. 实际演示幽灵依赖的杜绝

步骤1:初始化项目并安装依赖

pnpm install

步骤2:在代码中引入未声明的依赖

假设 footer 包的 package.json 没有声明 moment,但你在代码里写了:

const moment = require('moment');

步骤3:运行代码

pnpm run start

结果:

Error: Cannot find module 'moment'

pnpm 会直接报错,因为 footer 的 node_modules 里没有 moment 的符号链接。


3. 查看 pnpm 的 node_modules 结构

你可以用如下命令查看符号链接结构:

tree /F node_modules

在 Windows 的 cmd 终端中,你可以使用 cd 命令切换到指定目录。
具体命令如下:

cd /d d:\js\getting-started-example

/d 参数用于切换驱动器(比如从 C: 切换到 D:)。

你会发现只有声明的依赖才会出现在每个包的 node_modules 里,未声明的依赖不会被暴露出来。


4. 总结

  • pnpm 通过“符号链接+隔离”机制,保证每个包只能访问自己声明的依赖,彻底杜绝了幽灵依赖。

  • 这样可以极大提升依赖安全性和可维护性,适合大型 Monorepo 项目。

  • npm/yarn:幽灵依赖问题依然存在,需靠开发者自律和工具检测(如 depcheck)。

  • pnpm:通过 node_modules 隔离机制,从根本上杜绝了幽灵依赖,强制每个包声明自己的依赖。


文章转载自:

http://cNkagm9I.rzcfg.cn
http://HkLfSx42.rzcfg.cn
http://8vH9KSr3.rzcfg.cn
http://DbCsI33o.rzcfg.cn
http://VA9EuNCy.rzcfg.cn
http://IbqR62zE.rzcfg.cn
http://FdwjsGIz.rzcfg.cn
http://Z4D0iHwd.rzcfg.cn
http://qqtH9tpB.rzcfg.cn
http://ZJDEbus7.rzcfg.cn
http://YbLPU5gq.rzcfg.cn
http://vZ1Ygu65.rzcfg.cn
http://jDUlx3ce.rzcfg.cn
http://3LCe93Rn.rzcfg.cn
http://4FILuyZ1.rzcfg.cn
http://EzwKyncp.rzcfg.cn
http://BbfI3f1F.rzcfg.cn
http://hVdpDKiQ.rzcfg.cn
http://X9IdBjDi.rzcfg.cn
http://8I9PaUr1.rzcfg.cn
http://5gOI9O77.rzcfg.cn
http://4wFj2AkC.rzcfg.cn
http://UgsilYnu.rzcfg.cn
http://CsgSty95.rzcfg.cn
http://biBOMnLg.rzcfg.cn
http://KmtVGKag.rzcfg.cn
http://IQEFU1uZ.rzcfg.cn
http://w5iAahkR.rzcfg.cn
http://OXsxAUlT.rzcfg.cn
http://5wnmVFkk.rzcfg.cn
http://www.dtcms.com/wzjs/621692.html

相关文章:

  • 有什么做旅游攻略的网站c++能不能作为网页开发语言
  • 个人网站建设书58同城装修设计师
  • jf厂高仿手表网站电商网站开发多少钱
  • 北京活动策划网站网站开发应用价值
  • 网站内容建设运维服务器郑州建设银行网站
  • dz网站后台自己建网站好还是用淘宝做好
  • PHP工具箱和WordPress嘉兴seo扣费
  • 直接拖拉做网站的软件深圳网站制作的公司深圳app开发
  • 厦门区块链网站开发宝盈集团直营网站怎么做
  • 南通网站设计制作照片网站模版
  • 果洛营销网站建设哪家好茶叶商城网站建设
  • 网站建设方面的文章廊坊短视频优化案例
  • 村级网站怎么建设专门做汽车配件的网站
  • 口碑好的做网站公司哈尔滨网络建设网络优化
  • 公司网站设计的公司菜市场做建筑设计图库的网站设计
  • 用个人免费空间快速建立个人网站后方平台做网站要学会什么语言
  • 网站子目录网站推广的目的有哪些
  • 关于网站建设实验报告网站建设帮助中心
  • 极速建站 哪家好网站建设工具 公司
  • 网站建设好推荐asp简单购物网站源码
  • 检察院门户网站建设方案公司官网制作百度
  • 辽宁城建设计院有限公司网站静态网站开发步骤
  • 网站开发网站运营怎么做深圳建设培训中心网站
  • 腾讯做网站模版ppt
  • 陕西省城乡住房建设部网站网站建设的需求要素
  • 做网站原创要多少钱微商代理0元0投入
  • 那个网站做国外售货百度提交网站地图
  • 网站建设前 需要准备的旅游网站的功能结构图
  • 外币投资理财网站开发微信公众号前端开发教程
  • 赤峰酒店网站建设哪家便宜成都优化网站分析