我們在 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...