最近一个 Vue 3 + Spring boot 的项目在生产环境打包失败了,排查下了原因,发现是版本没有锁定导致的,因为在开发环境,我们的机器都可以连通外网去下载依赖,但生产环境nexus一般都会限制网络访问,所以某些不匹配的版本可能就会下载失败,从而导致构建失败。
这里记录一下 package.json 里面的包依赖版本的用法:
精确版本
指定一个确切的版本号,如"1.2.3"。这意味着将始终使用这个特定版本。如:"axios": "1.6.3"
脱字符(Caret)
当你在版本号前加上^,如"^1.2.3",你将会得到与指定版本号兼容的最新版本。这表示安装的版本至少与指定版本相同,但小于下一个主版本号。例如,"axios": "^1.6.3" 将匹配任何1.x.x版本,但不匹配2.0.0
波浪号(Tilde)
使用~,如"~1.2.3",将允许在次版本范围内的更新。这表示将安装与指定版本至少相同,但小于下一个次版本号的版本。例如,"axios": "~1.6.3"将匹配1.6.x版本,但不匹配 1.7.0
最新版本
通过指定"latest",你可以确保总是安装最新发布的版本,如 "axios": "latest", 等价于 * 或者空字符串
指定范围
你可以指定一个版本范围,使用>、<、>=、<=来定义。例如,如 "axios": ">=1.2.3 <2.0.0"将匹配所有大于或等于1.2.3且小于2.0.0的版本
URLs/GitHub
也可以指定一个Git仓库的URL或一个GitHub的用户名和仓库(如"user/repo")。例如,直接从GitHub安装特定的库。
本地路径
你可以通过指定文件系统上的路径来引用本地的包