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

关于npm和pnpm

1. ​npm(传统包管理器)​

  • ​工作原理​​:

    1. ​扁平化依赖​​:安装依赖时,npm会尽量将子依赖提升到 node_modules顶层,避免深层嵌套。例如:安装 vue@3.2.0时,它的子依赖 @vue/reactivity会被放在 node_modules/@vue/reactivity,而不是 node_modules/vue/node_modules/@vue/reactivity

    2. ​独立存储​​:每个项目的 node_modules都是完全独立的副本,即使多个项目用同一版本的库,也会重复下载存储。

  • ​优点​​:

    • 简单易用,Node.js 自带,无需额外安装。

    • 扁平化结构让开发者能直接引用子依赖(即使未显式声明)。

  • ​缺点​​:

    • ​磁盘空间浪费​​:100 个项目用 vue,就有 100 份 vue文件。

    • ​依赖不确定性​​:扁平化可能导致版本冲突(如两个依赖需要不同版本的 axios)。

    • ​幽灵依赖​​(后文详解)。

2. ​pnpm(高效包管理器)​

  • ​工作原理​​:

    1. ​全局存储 + 硬链接​​:

      • 所有依赖的包实际存储在统一的全局目录(如 ~/.pnpm-store)。

      • 项目的 node_modules中只创建这些文件的​​硬链接​​(几乎不占额外空间)。

    2. ​嵌套依赖结构​​:

      • 严格保持依赖树的嵌套关系,避免扁平化。

      • 例如 vue的子依赖 @vue/reactivity会放在 node_modules/vue/node_modules/@vue/reactivity

  • ​优点​​:

    • ​极快安装​​:依赖已存在时,直接创建硬链接(秒级安装)。

    • ​节省磁盘​​:100 个项目用 vue,磁盘上只有 1 份 vue文件。

    • ​严格依赖隔离​​:避免版本冲突和幽灵依赖。

  • ​缺点​​:

    • 需要单独安装(npm install -g pnpm)。

    • 某些老旧工具可能不兼容嵌套的 node_modules结构。

3. 幽灵依赖

幽灵依赖是指:​​项目中使用了未在 package.json的 dependencies或 devDependencies中声明的包​​,但这些包却能正常工作(直到某天突然崩溃)。
npm的扁平化依赖​​是罪魁祸首:假设你安装 A包,A依赖 B@1.0。npm会把 B@1.0提升到 node_modules顶层。你的代码​​直接引用 B​​(即使没在 package.json声明),也能运行!这就是一个“幽灵依赖”。

4.总结

http://www.dtcms.com/a/418472.html

相关文章:

  • Django 中的元类(Metaclass)应用及生产场景示例
  • 以涡度通量塔的高频观测数据为例,基于MATLAB开展;生态碳汇涡度相关监测与通量数据分析实践技术应用
  • 慈溪网站建设哪家好襄阳蒂凯网络网站建设小程序
  • 做网站保存什么格式最好建设银行企业网上银行网站打不开
  • 数据仓库和商务智能考试考点及关系梳理
  • 灵犀互娱笔试
  • 【多线程】什么是原子操作(Atomic Operation)?
  • Visual Studio Code 的 AI 插件汇总
  • Java学习笔记六(集合)
  • 简易分析慢 SQL 的流程和方法
  • Docker 中删除镜像与容器的完整指南
  • 通州手机网站建设北京网站设计实力乐云践新
  • 高速PCB板DDR5数据信号的长STUB要背钻吗?
  • FPGA强化-简易频率计
  • VBScript自动化打印:智能过滤Word文档
  • 解码数据结构内核链表
  • 郑州设计网站公司东莞建设银行电话号码
  • 个人网站的建设目标绥德网站建设
  • Elasticsearch面试精讲 Day 23:安全认证与权限控制
  • 学习嵌入式的第四十三天——ARM——I2C
  • 玳瑁的嵌入式日记---0928(ARM--UART)
  • CentOS 8 部署 Zabbix 7.0 LTS 完整流程(PostgreSQL)及不同系统agent安装
  • 网站开发环境设计怎么在百度做网站推广
  • Langchain+Neo4j+Agent 的结合案例-电商销售
  • 计算机网络【第二章-物理层】
  • 计算机网络【第一章-计算机网络体系结构】
  • mac 安装npm之后,其他终端无法访问
  • 购物网站哪个最好记账公司如何拉客户
  • 汽车网络安全 CyberSecurity ISO/SAE 21434 测试之四
  • ARM芯片架构之APB,ATB总线