2018-09-14

Angular package.json 版本中 tilde(~) 跟 caret(^) 的意思

tilde(~) and caret(^) in package.json

我們在 Angular 的 package.json 會看到以下結構,結構中版本號碼前有 ^ 或 ~ 的符號,這兩個符號是什麼意思呢?


"dependencies": {
    "@angular/animations": "^5.2.11",
    "@angular/common": "~5.0.0",
    "@angular/compiler": "5.0.0",
    "@angular/compiler-cli": "5.0.0",
    "@angular/core": "5.0.0",
    "@angular/forms": "5.0.0",
    "@angular/http": "5.0.0",
    "@angular/platform-browser": "5.0.0",


不廢話,我簡單歸納其意思如下:

首先,我們在此定義版本的欄位格式: 1.2.3 三欄分別為 (major, minor, patch)
~:表示更新 patch 版本到最新,但止於 minor 版本,如 ~1.2.3 表示 1.2.x 等版本都會update,但 1.3.0 則不會更新

^:表示更新 minor 版本到最新,但 major 版本會忽略,如 ^1.2.3 表示 1.x.x  等版本都會update,包含 1.3.0, 終止於最大版本 2.0.0 ,不會更新。

【參考資料】
https://docs.npmjs.com/misc/semver#caret-ranges-123-025-004
https://stackoverflow.com/questions/22343224/whats-the-difference-between-tilde-and-caret-in-package-json...