介绍语义化版本控制(SemVer)
SemVer(即语义化版本控制)是一种常用的版本控制方案,用于在软件开发中传达软件包的变化和兼容性。JavaScript生态系统主要通过npm软件包管理器采用了SemVer作为JavaScript软件包的标准版本控制方案。软件包的版本可以在其package.json
文件中找到,并且也会显示在npm注册表中。
```json [package.json] { "name": "my-package", "version": "1.0.0" }
## SemVer版本
SemVer版本采用以下**三个数字组件**的格式:
{major}.{minor}.{patch}
每个组件代表对软件所做的特定类型的更改。
- **主要版本**:重大更改,可能会**破坏兼容性**。开发人员在升级之前应仔细阅读文档并针对新版本测试其代码。
- **次要版本**:向后兼容的**添加或改进**,不会破坏与之前版本的兼容性。用户通常可以升级到新的次要版本,而不必担心可能需要修改代码的重大更改。
- **补丁版本**:向后兼容的**错误修复、补丁或维护**发布。补丁版本旨在安全,不应引入新功能或破坏性更改。
以下表格总结了每个组件所代表的不同类型的更改:
| 组件 | 更改类型 | 示例 |
| --------- | ------------ | ------------------------------------------ |
| 主要版本 | 不兼容 | 破坏性更改、重写、架构更改 |
| 次要版本 | 兼容 | 新功能、功能增强 |
| 补丁版本 | 兼容 | 错误修复、补丁、维护发布 |
## 发布和预发布版本
软件包的**第一个版本**通常被标记为`1.0.0`。这是因为软件包的初始发布被认为是一个主要版本,而主要版本的第一个版本总是`1.0.0`。以`0.x.x`开头的版本被认为是预发布版本,不适用于生产环境。
此外,SemVer允许在版本号后附加**预发布版本**。这些版本由连字符和一系列字母数字标识符组成,例如`1.0.0-alpha.1`或`1.0.0-beta.2`。预发布版本通常用于表示软件仍在积极开发中,可能还不适用于生产环境。
## 指定要使用的版本
在安装软件包时,您可以通过将版本号附加到软件包名称来指定要使用的版本,如下所示:
```shell
npm install my-package@1.0.0
如果不指定版本,npm将安装软件包的最新版本。您还可以使用^
或~
符号来指定一系列版本。例如,^1.0.0
将安装与1.0.0
兼容的软件包的最新版本。类似地,~1.0.0
将安装与1.0.0
兼容且具有相同主要版本的软件包的最新版本。以下是指定版本的不同方式的简要总结:
- 精确版本:
1.0.4
- 补丁版本:
1.0
或1.0.x
或~1.0.4
- 次要版本:
1
或1.x
或^1.0.4
请注意,您还可以通过直接编辑package.json
文件来更改每个依赖项的版本。只需记住在对package.json
文件进行任何更改后运行npm install
即可。