【综合】工程化

包管理

npm

pnpm、npm、yarn 包管理工具『优劣对比』及『环境迁移』 - 掘金 (juejin.cn)

v2 早期递归依赖,导致重复安装问题

v3 扁平化解决递归依赖, 扁平化依赖算法耗时长,下载需要更长时间

  • 因为如果两个模块依赖同一个模块但版本不同,npm v3会尝试将其中一个版本的模块安装在顶层,另一个版本的模块安装在依赖它的模块下面

v5 package-lock.json解决扁平化耗时长问题:

  1. 锁定包精确版本
  2. 锁定下载地址
  3. 锁定包直接依赖关系

package-lock.json 的作用

  1. 记录项目所有依赖的精确版本号
  2. 提供生成确切的依赖树,可视化
  3. 优化依赖安装过程,跳过重复依赖
  4. 防止依赖意外更新

pnpm

  1. 采用了硬链接来直接指向依赖磁盘地址,避免重复安装依赖
  2. 默认支持monorepo 多项目管理
  3. 替代nvm pnpm env use --global [version]