跳到主要内容

package.json 版本的(^)代表的意义

· 2 分钟阅读
Eric Cheng

前几天 build server build 出来的专案有 exception,显示是版本问题,一整个疑惑我不是在 package.json 把 dependencies 的版号都写死了吗,怎么还会有版本问题 ?

基本上我是 JAVA 后端工程师,会需要写 Node 是不得已的,所以 Node 没学好也是理所当然的,事情发生的原因是专案的 package.json 的 dependencies 长这样

"dependencies": {
"aws-iot-device-sdk": "^2.2.1",
}

我很直觉的认为捉的版号就是 2.2.1

但实际开 package-lock.json 来看实际版本时发现,4月build时捉的版本是 2.2.6,8月build时捉的版本是 2.2.11,都不是指定的 2.2.1

查了一下文件 发现误会大了

  • ~version “Approximately equivalent to version”, will update you to all future patch versions, without incrementing the minor version. ~1.2.3 will use releases from 1.2.3 to <1.3.0.
  • ^version “Compatible with version”, will update you to all future minor/patch versions, without incrementing the major version. ^2.3.4 will use releases from 2.3.4 to <3.0.0.

简单的说在版号前加 ~ 或 ^ 会是有条件的捉更新版本,要固定版本就不要写任何符号在前面

直接把 ^ 符号全部摘除,重跑 npm install 问题解决

版权声明


這是 google 廣告