Beta?RC?Nightly?带你了解下大佬们都是如何定义软件版本的

2,943 阅读4分钟

业界常用的软件版本分类和区别

Alpha 版本

  • 定义:软件开发的早期版本,通常只有开发团队或内部人员使用。
  • 特点:功能可能还不完整,存在很多错误和问题,主要用于验证功能和开发测试。
  • 目的:通过内部测试发现和修复严重的错误,并进行初步的功能验证。

Beta 版本

  • 定义:在 Alpha 版本之后发布的版本,通常提供给有限的外部用户进行测试。
  • 特点:相比 Alpha 版本更稳定,功能更接近最终版本,但仍可能包含一些错误。通常包括所有主要功能。
  • 目的:通过更广泛的用户测试,进一步发现和修复错误,收集用户反馈,以改进稳定性和用户体验。

Release Candidate (RC) 版本

  • 定义:Beta 版本之后发布的版本,接近最终的正式版本,俗称预发布版,例如微信开发者工具就有预发布版、开发版、稳定版之分。
  • 特点:几乎没有已知的严重错误,功能设计已敲定,只进行错误修复和优化。如果没有重大问题,可能成为最终的正式版本。
  • 目的:通过最后阶段的测试,确认软件已经足够稳定,适合正式发布。

正式版本(Release/Stable)

  • 定义:经过充分测试和验证后发布的版本,面向大众正式使用。
  • 特点:应当是稳定可靠的,具备完整的功能和文档支持。
  • 目的:提供给所有用户,作为最终的产品版本。

维护版本(Patch/Hotfix)

  • 定义:对正式版本的小规模更新,通常用于修复错误或安全漏洞。
  • 特点:不引入新的功能,仅做出小幅修正。
  • 目的:迅速修复问题,确保软件的持续稳定性和安全性。

开发版本(Nightly/Dev)

  • 定义:这是每天或定期自动构建的版本,包含最新的更改和功能。
  • 特点:不稳定,可能包含未完成的功能和新引入的错误,通常仅供小部分开发者或技术爱好者使用。
  • 目的:测试最新的更改,并为开发人员提供持续的反馈。

每个阶段的版本都有其特定的目标和受众,确保软件逐步走向稳定和成熟。

管理npm包版本

了解上述概念后,我们在开发和维护自己的npm包时就可以应用到了,那么具体怎么用呢?

npm 遵循语义化版本控制(SemVer)规范,版本号通常以 MAJOR.MINOR.PATCH 的形式表示,其中:

  • MAJOR:主要版本,不兼容的功能修改。
  • MINOR:次要版本,当你做了向下兼容的功能性新增时使用。
  • PATCH:补丁版本,当你做了向下兼容的问题修复时使用。

主要版本 0 (0.y.z) 用于初始开发,在这个阶段,API 可能会频繁变化,开发者可以自由地进行重大改动,不保证 API 的稳定性,适合用于内部测试或早期用户测试,收集反馈并验证基本的功能,不建议用于生产。

1.0.0 用于对外正式发布稳定版,之后的迭代遵循规范即可。

此外,还可以通过附加标签(pre-release identifiers)来标识不同的开发阶段,如 alphabetarc

使用附加标签发布 npm 包

Alpha 版本

  • 版本号格式1.0.0-alpha1.0.0-alpha.11.0.0-alpha.2
  • 使用方法:适用于早期测试阶段,使用 npm publish --tag alpha 发布。

Beta 版本

  • 版本号格式1.0.0-beta1.0.0-beta.11.0.0-beta.2
  • 使用方法:功能较为稳定,但仍需要广泛测试。可以通过 npm publish --tag beta 发布。

Release Candidate (RC) 版本

  • 版本号格式1.0.0-rc1.0.0-rc.11.0.0-rc.2
  • 使用方法:接近正式发布,等待反馈或仅剩一些小的调整。可以通过 npm publish --tag rc 发布。

正式版本

  • 版本号格式1.0.0
  • 使用方法:功能完整且稳定的版本。可以通过 npm publish 发布,没有特殊的标签。

具体步骤

初始化或更新版本号

自行修改package.json或使用 npm version [newversion] 来更新 package.json 中的版本号。例如,npm version 1.0.0-alpha.1 会将版本号更新为 1.0.0-alpha.1

发布包

  • 发布 alpha 版本:npm publish --tag alpha
  • 发布 beta 版本:npm publish --tag beta
  • 发布 rc 版本:npm publish --tag rc
  • 发布正式版本:npm publish

安装非正式版本

通过 npm install your-package@alpha 来安装 alpha 版本,通过 npm install your-package@beta 安装 beta 版本等。

预发布版本的优先级

在 SemVer 中,带有预发布标签的版本(如 1.0.0-alpha.1)的优先级低于同样的稳定版本(如 1.0.0)。这意味着当执行 npm install your-package 时,如果你没有明确指定标签(如 @alpha),npm 会默认安装最高版本的正式版本(没有预发布标签的版本)。

注意,如果你使用 npm publish 而没有加 --tag beta 发布了非正式版本,如 1.0.0-beta.1,那么使用npm install your-package安装时会优先安装1.0.0-beta.1而不是1.0.0,因为你没有在发布时打特殊标签

调试本地包

仅本地调试时不需要每次都发布版本这么麻烦啦,可以去看下这篇文章 还在用npm link?yalc: 更丝滑的前端link调试方案