我們開發中經常會碰到 package.json
里面的軟件包 的版本號前邊有 ~,^,甚至有的有>, <等標識,那他們都是什么意思呢?
想要知道~,^,>,<這些字符什么意思,我們先去了解一下什么是 npm 的語義版本控制
npm的語義版本控制
語義版本控制:所有的版本都有 3 個數字: x.y.z 。
- x 代表的是主版本(當進行不兼容的 API 更改時,則升級主版本)
- y 代表的是次版本(當以向后兼容的方式添加功能時,則升級次版本)
- z 代表的是補丁版本(當進行向后兼容的缺陷修復時,則升級補丁版本)
這是一種約定,每個npm包必須遵守該約定,因為整個系統都依賴於此。
因為npm設置了一些規則,可用於在 package.json
文件中選擇要將軟件包更新到的版本(當運行 npm update
時)。
規使用了以下這些符號:
- ^ :只會執行不更改最左邊非零數字的更新。(如果寫入的是 ^0.13.0,當執行 npm update 時,可以更新到 0.13.1、0.13.4 等,但不會更新到 0.14.0 或更高的版本。如果寫入的是^1.13.0,當執行npm update時,可以更新到 1.13.1、1.14.0 等,但不會更新到 2.0.0 或更高的版本)
- ~ :如果寫入的是 ~0.13.0,當執行 npm update 時,會更新到補丁版本:即 0.13.1。但 0.14.0 不可以
- < :接受低於指定版本的任何版本。
- <= :接受等於或低於指定版本的任何版本。
- > :接受高於指定版本的任何版本。
- >= :接受等於或高於指定版本的任何版本。
- = :接受確切的版本。
- - :接受一定范圍的版本。(例如:1.2.0 - 1.6.0)
- || :組合版本。(例如
< 2.1 || > 2.6
)
還有其他一些規則:
- 無符號: 僅接受指定的特定版本。(例如
1.2.1
) latest
: 使用可用的最新版本。