npm 语义化版本规范整理

每个项目的根目录下都有一个 package.json 文件,定义了这个项目所需的各种模块,以及项目的配置信息。其中,dependencies 字段指定了项目运行所依赖的模块,devDependencies 指定项目开发所需要的模块。

语义化版本管理

dependenciesdevDependencies 都指向一个对象。该对象的各个成员,分别由模块名和对应的版本要求组成,表示依赖的模块及其版本范围。这里使用了 Semver (语义化版本)来控制。示例如下:

  "dependencies": {
    "@babel/core": "^7.5.4",
    "@babel/preset-env": "^7.5.4",
    "babel-core": "^6.26.3",
    "babel-jest": "^24.8.0",
    "babel-preset-env": "^1.7.0",
    "jest": "^24.8.0",
    "regenerator-runtime": "^0.13.2"
  }

版本格式

一般为:

主版本号.次版本号.修订号

不同版本号递增规则如下:

  • 主版本号(major):当你做了不兼容的 API 修改(大版本修改)
  • 次版本号(minor):当你做了向下兼容的功能性新增,可以理解为 Feature 版本
  • 修订号(patch):当你做了向下兼容的问题修正,可以理解为 Bug fix 版本

各种版本限定

  • 指定版本:比如1.2.2,遵循“大版本.次要版本.小版本”的格式规定,安装时只安装指定版本。
  • 波浪号(tilde)+指定版本:比如~1.2.2,表示安装1.2.x的最新版本(不低于1.2.2),但是不安装1.3.x,也就是说安装时不改变大版本号和次要版本号。
  • 插入号(caret)+指定版本:比如ˆ1.2.2,表示安装1.x.x的最新版本(不低于1.2.2),但是不安装2.x.x,也就是说安装时不改变大版本号。需要注意的是,如果大版本号为0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。
  • latest:安装最新版本。
  • 更多可以参考:NPM版本控制符^,~,>,||,-的含义详解

参考文档

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • npm 包管理器的常用命令 测试环境为node>=8.1.3&&npm>=5.0.3 1, 安装命令 //全局安装...
    13122阅读 2,983评论 0 2
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,488评论 0 9
  • 什么是 NPM npm之于Node,就像pip之于Python,gem之于Ruby,composer之于PHP。 ...
    ihoey阅读 6,283评论 2 36
  • npm 包管理器的常用命令 测试环境为node>=8.1.3&&npm>=5.0.3 1, 首先是安装命令 2, ...
    BlackGan3阅读 5,171评论 0 1
  • “java越来越多。” php狠狠的说,他转头看着c:“c哥,您可是前辈,java最近砸了我不少场子,你老再不出来...
    17aa7dcf7b8c阅读 271评论 0 0