package.json文件是Node.js项目中的一个重要文件,它包含了项目的各种元信息,如项目名称、版本、描述、依赖关系等。其中,版本规则是package.json文件中的一部分,用于指定项目的版本号。

版本声明规则

package.json的版本号规则遵循 SemVer 规则,一般格式如下

{
  "name": "my-project",
  "version": "1.2.3"
}

可以看出,版本号通常以一个字符串的形式表示,格式为MAJOR.MINOR.PATCH,其中MAJORMINORPATCH都是非负整数,分别代表主版本号、次版本号和补丁版本号。这三个字母的含义分别如下:

  • MAJOR:主版本号,通常在进行了不兼容的API变更时增加。
  • MINOR:次版本号,通常在添加了新的功能或者在原有功能上进行改进,但仍然保持向下兼容时增加。
  • PATCH:补丁版本号,通常在进行了向下兼容的错误修复时增加。

可以看出,平时我们安装的包都是遵循这个规则的版本号,我们在开发一些通用的npm包时,也要遵循这个规则。通常要发布的时候我们可以手动修改 package.json 文件的 version 字段来调整版本,或者通过命令行工具也可以,比如以下命令:

  • 发布新子版本:npm version minor(递增次版本号)或 npm version patch(递增修订号)。
  • 发布 rc 版本:npm version prerelease --preid=rc

这些命令将自动更新 package.json 文件中的版本号,并将新版本发布到包管理器的注册表中。

版本修饰符

除了数字组成的版本号,我们还可以额外添加一些修饰符,修饰符是版本号的补充说明,用来表示该版本并非稳定或可能无法满足预期的兼容性需求。修饰符必须由ASCII字母数字和连接号组成,且禁止留白。数字型的修饰符禁止在前方补零。常见的修饰符如下表:

修饰符含义
alpha内部版本
beta测试版本
demo演示版本
enhance增强版本
fullVersion完整版本
final最终版本
ga(General Availability):发行稳定版
rc(Release Candidate):候选版本,几乎就是正式版了

我们平时在声明包版本时,可以参考当前项目的进展来使用对应的修饰符。

版本使用规则

在通过npm i xxx命令安装包到项目后,会在package.json文件生成对应的包以及版本号,通常位于 dependencies 或者 devDependencies 下面。例如

"dependencies": {
  "execa": "^8.0.1"
}

细心的朋友可能已经发现,为什么版本号前面有个特殊的箭头符号"^",这个"^",表示当更新包时,锁定主版本,将次版本更到最新。

除了"^"符号之外,其他符号的含义如下:

版本符号含义
精确版本号只使用指定的精确版本,不适用符号。
波浪号(~)允许小版本号的变化,不允许大版本号变化。
插入号(^)允许小版本号和大版本号的变化,不允许主版本号变化。
星号(*)接受任何版本,不建议在生产环境中使用。

我们可以按需使用对应的符号,通常如果项目比较旧,不适合更新包版本,可以通过锁定版本来解决,即不加符号,然后重新执行安装命令即可。

"dependencies": {
  "execa": "8.0.1"
}


本文为原创,未经授权,禁止任何媒体或个人自媒体转载
商业侵权必究,如需授权请联系[email protected]
标签: npm