package.json文件解读

本文最后更新于:19 小时前

package.json几乎在每个开发项目中都会用到,可是你真的了解它吗?

package.json文件解读

package

版本号

版本匹配策略

^, ~, * 这些不同的版本号前缀分别代表什么含义?
1
2
3
4
3.0.0		# 代表唯一的版本号,不支持更新,npm install --save-exact
^1.0.1、1、1.x # 代表了可以命中主版本一致、但更新的版本号。
~1.0.1、1.1、1.1.x # 代表了可以命中主版本、次版本一致、但更新的版本号。
* 和 x # 可以命中一切新发布的版本号。

package-lock.json

有了package.json为什么还要有它?它起什么作用?

先看以下场景:

  • 依赖 A 安装时下载了最新版,如 1.2.3,出现了兼容问题,项目出现 bug;
  • 依赖 A 所依赖的 BC 下载了别的版本,导致 A 出现问题,从而项目出现问题

它的作用就是:锁定安装时的包的版本号及包的依赖的版本号, 以保证其他所有人在使用 npm install 时下载的依赖包都是一致的

关于 package.json 和 package-lock.json 的几个小结论:

  • package.json 用于告诉 npm 项目运行需要哪些包, 但包的最终安装的版本不能够只依靠这个文件进行识别, 还需以 package-lock.json 为准
  • package.json 中修改版本号会影响 package-lock.json, 并且 package.json 比 package.lock.json 的优先级高
  • 为了保证该项目的环境依赖一致, 在项目移动时需要同时复制 package.json 和 package-lock.json 两个文件
  • 不要轻易动 package.json 与 package-lock.json

删除重装一时爽,版本不对火葬场!!!

npm install过程

image-20230723104536461

参考链接

前端依赖管理那点事儿 - 掘金 (juejin.cn)


package.json文件解读
http://timegogo.top/2023/07/23/前端工程化/packagejson文件解读/
作者
丘智聪
发布于
2023年7月23日
更新于
2026年6月10日
许可协议