實用工具

Semver 版本範圍檢查器

看看 ^1.2.0、~2.3 這類範圍接受哪些版本——使用 npm 自己的 node-semver,預發布版本也算在內。

瀏覽器本機執行程式碼轉換5466
免費

輸入

0 B

結果

結果會顯示在這裡。

^1.2.0 是否接受 1.10.0-beta.1、^0.2.3 允許哪些版本,這些問題很容易猜錯,又不方便測試。貼上一組版本號和一個範圍,這個工具就以 node-semver(npm 解析相依套件所用的函式庫)逐一標出接受或拒絕。它也會正確排序——1.10.0 排在 1.2.0 之後,預發布版本排在正式版之前——顯示範圍的完整寫法,並列出符合範圍的最高和最低版本。

它是怎麼運作的

  • 版本號可以用逗號、空格或換行分隔;latest 這類不合法的版本會另外列出,而不是默默略過。
  • 範圍會以展開形式顯示——^1.2.0 即 >=1.2.0 <2.0.0-0——這才是 node-semver 實際比較的內容。
  • 除非你允許,預發布版本預設不計入,與 npm 一致:預設情況下 ^1.2.0 不接受 1.10.0-beta.1。
  • 會算出最高版本的下一個 patch、minor、major 和 rc 預發布版本;剛好輸入兩個版本時,還會顯示兩者的差異層級(major、minor、patch…)。

你的資料去了哪裡

哪也沒去。本工具完全在你的瀏覽器裡執行:你貼上的文字由頁面處理,不會傳輸到任何伺服器,也不會寫進任何紀錄。

本工具免費且免登入,執行結果只存在於你目前的頁面裡,不會被儲存到任何地方。

它要花多少

本工具完全免費,不需要登入,也不消耗點數。

常見問題

^ 和 ~ 有什麼差別?
^ 允許不改動最左邊非零數字的所有更新:^1.2.3 接受到 2.0.0 之前的版本。~ 在指定了 minor 時只允許 patch 更新:~1.2.3 接受到 1.3.0 之前的版本。npm 預設寫進 package.json 的是 ^。
為什麼 ^0.2.3 不接受 0.3.0?
因為對 0.x 版本而言,minor 位數被視為破壞性變更:在 1.0.0 之前,語意化版本不做任何穩定性承諾,所以 ^0.2.3 代表 >=0.2.3 <0.3.0。同理,^0.0.3 只接受 0.0.3 本身。
為什麼 ^1.2.0 拒絕 1.10.0-beta.1?
npm 不讓預發布版本進入範圍,除非範圍本身寫明了同一 major.minor.patch 的預發布版本,以免意外裝到 beta 版。開啟「包含預發布版本」,就能看到允許預發布時範圍會接受什麼,相當於 npm 的 --include-prerelease。
寬鬆模式有什麼用?
它接受嚴格 semver 不承認的不規範版本號,例如 =1.2.3beta,並顯示被解讀成什麼——這裡是 1.2.3-beta。一些舊套件和標籤會用這種寫法;嚴格模式才是規範允許的格式。

背後的開源專案

本工具執行在 npm/node-semver 之上,以 ISC 授權發布。如果你需要在自己的程式裡實作同樣的能力,直接用這個函式庫。

npm/node-semver

也常被稱作

  • semver 檢查
  • semver 範圍計算
  • npm 版本範圍
  • ^ 和 ~ 的差別
  • 語意化版本
  • 版本號比較