主版本.次版本.修订号。装依赖时前面的符号决定升级范围: 主版本.次版本.修订号。装依赖时前面的符号决定升级范围: 主版本.次版本.修订号。装依赖时前面的符号决定升级范围:
前端工程化 词条目录
前端Wiki/前端工程化/基础/包管理器

依赖与版本号管理

版本号遵循语义化版本(SemVer):主版本.次版本.修订号。装依赖时前面的符号决定升级范围:^1.2.3 允许 1.x.x(次版本升级,向后兼容),~1.2.3 只允许 1.2.x(修订号升级),无符号表示锁定。

只写范围会导致“我电脑上好的”问题:不同时间安装的依赖版本不同。lockfile(package-lock.json / yarn.lock / pnpm-lock.yaml)记录每个依赖的确切版本与来源,提交到 Git 后保证所有人装出一模一样的 node_modules。

  • ^1.2.3:可升级到 1.x.x(最常用);~1.2.3:只升修订号;1.2.3:锁死
  • lockfile 必须提交到仓库:它是“大家装同样版本”的保证
  • peerDependencies:插件声明宿主版本(如 vue 插件要求 vue@3),由项目主体安装
npm
// 查看实际安装的版本树(排查“版本不对”的第一命令)
// 命令行: npm ls vue
// 输出示例:
// └─ vue@3.4.21   ← 实际安装版本,可能与 package.json 的 ^3.4.0 不同

// 手动锁定某个版本(修复“昨天还好好的”问题)
// 命令行: npm install vue@3.4.21 --save-exact

// 审计已知漏洞依赖
// 命令行: npm audit

// 清理重装(治 node_modules 各种玄学问题)
// 命令行: rm -rf node_modules package-lock.json && npm install
本节要点^ 锁次版本、~ 锁修订号;lockfile 提交进仓库,团队才能装出一致的 node_modules。