构建与工具

语义化版本(semantic versioning · semver)

语义化版本(semantic versioning,简称 semver)是一套大家公认的版本号写法,把版本号写成三段——主版本.次版本.修订号,比如 2.4.1——每一段都对「改了什么」做出明确承诺。它的妙处在于:光看这个号码,你就能判断一次更新是可以放心拿来,还是很可能把你弄崩。

从左往右读。修订号(PATCH)加一(2.4.1 → 2.4.2)表示一个向后兼容的 bug 修复:安全。次版本(MINOR)加一(2.4.1 → 2.5.0)是加了新功能,但没破坏旧的:依然安全。主版本(MAJOR)加一(2.4.1 → 3.0.0)则是最响亮的那声警告——它在喊「我删掉或改动了某些东西,你的代码可能得跟着改」。

你清单文件里那些小符号,说的也正是这件事。脱字符「^1.2.3」意思是「更新的 1.x 都行,但绝不跳到 2.0」——除了主版本升级,它什么都信。波浪号「~1.2.3」更严格:「只要 1.2 里更新的修订号就好」。靠它们,你能自动收下那些安全的修复,同时绕开那些会咬人的改动。

  2.4.1
  │ │ └─ PATCH — backward-compatible bug fix (safe)
  │ └─── MINOR — new features, nothing broken (safe)
  └───── MAJOR — breaking change (read the notes!)

^1.2.3  → any 1.x, never 2.0
~1.2.3  → only newer patches of 1.2

三个数字,三种承诺——符号则决定你愿意接受多新的版本。

0.x.y 是「蛮荒地带」:1.0 之前规则比较松,连次版本升级都可能搞坏东西。那个阶段要小心些。

又称
semverversion numbermajor.minor.patchcarettilde