跳至主要内容

[npm] 套件版本的意義 semver

keywords: version
  • Semver 指的是 semantic versioning。

當你要分享套件給別人是,通常都是從 1.0.0 開始,但這在 npm 中常常沒有跟著這個規則,因此你可以看到很多 version 是以 0.0.x 開始,而 0 開頭的意思,表示這個套件還不夠穩定來作為公開釋出,因此如果你的套件是別人可以正常使用的,那麼應該以 1.0.0 開始。

semver @ npmjs

semantic version(semver)

  • patch release:當套件只進行基本的 bugfix ,沒有新增什麼功能或特色,會增加最後一位的版本號時,1.0.1
  • minor release:當套件有增加 api 的一些功能,但不會影響到這個套件的整體使用,會增加中間的版本號,1.1.0
  • major release:新的 api 已經是無法向下兼容的,也就是在新版的套件中使用舊版的 API 可能會導致錯誤,這時候套件會增加最前面的版本號,2.0.0

更新套件

如果你只想更新套件的 patch version,可以在 package.json 中輸入:

1.0.x
~1.0.4

如果你只想更新套件的 minor version,可以在 package.json 中輸入:

1.x
^1.0.4
  • version Must match version exactly
  • >version Must be greater than version
  • >=version etc
  • <version
  • <=version
  • ~version:更新 patch 的版號至最新
  • ^version:更新 minor 的版號至最新,例如 ^1.2.3 的意思是 >=1.2.3 <2.0.0,參考 semver
  • 1.2.x 1.2.0, 1.2.1, etc., but not 1.3.0
  • http://... See 'URLs as Dependencies' below
  • * Matches any version
  • "" (just an empty string) Same as *
  • version1 - version2 Same as >=version1 <=version2.
  • range1 || range2 Passes if either range1 or range2 are satisfied.
  • git... See 'Git URLs as Dependencies' below
  • user/repo See 'GitHub URLs' below
  • tag A specific version tagged and published as tag See npm-dist-tag
  • path/path/path See Local Paths below
// git repository
"iso-3166-2": "git+https://github.com/Wavinfo/iso-3166-2.js.git",

package.json @ npm