package.json 依赖版本管理之 major minor patch

731

问题背景

Jenkins 前端打包一直报错。错误信息如下:

Jietu20210803-110929.png

问题原因

vue 和 vue-template-compiler 的版本不一致导致的。 检查 package.json 中 vue 和 vue-template-compiler 的版本信息。

"vue": "2.6.11",
"vue-template-compiler": "^2.6.11",

咋一看似乎没有问题版本都是 2.6.11。仔细看发现,vue-template-compiler的版本信息前有一个 ^ 符号。这个符号的含义是什么?除此之外,版本前添加 ~ 的含义是什么呢?版本前不加任何修饰符号是什么意思?

  • 版本前不加任何修饰符,表示锁死 major,minor,patch。
  • 版本前添加 ^ 符号表示锁死 major 大版本。
  • 版本前添加 ~ 符号表示锁死 minor 中版本。

除了 ~ 和 ^ 之外,在版本号前可以添加 < <= > >= 等符号。这些符号的意思比较直观,不表。

解决方案

锁死 vue 和 vue-template-compiler 的版本。

"vue": "2.6.11",
"vue-template-compiler": "2.6.11",

或者同时固化 major 版本

"vue": "^2.6.11",
"vue-template-compiler": "^2.6.11",