跳至主要内容

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 問題解決



版權聲明

,轉載請註明出處
本文連結: https://tech.havocfuture.tw/blog/package-json-caret



這是 google 廣告