语义化版本规则

// package.josn

{
  "name": "jss-admin",
  "version": "1.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve --env=test --proxy-config proxy.config.json",
    "build": "ng build --env=test --prod --build-optimizer",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/compiler": "^5.2.0",
    "@angular/core": "^5.2.0"
  },
  "devDependencies": {
    "@angular/cli": "~1.7.3",
    "@angular/compiler-cli": "^5.2.0",
    "@types/bootstrap": "^4.0.1",
   
    "tslint": "~5.9.1",
    "typescript": "~2.5.3"
  }
}

这是一个package.json,其中的dependencies意为附属品,在此表示依赖之意。
dependencies表示最终构建的项目里需要用到的依赖,dependencies表示生产环境需要的依赖,devDependencies表示开发、构建这个过程中需要的依赖。如炒菜需要盐和铁勺,前者是dependency,后者是devDependency。

注意到dependencies和devDependencies中的版本号前面的修饰符,^和~,这二者的区别是什么呢?
github提出语义化版本规范Semver。具体细节如下:

  • 版本用形如 主版本号.次版本号.修订号 的三个数字表示,即major.minor.patch
  • 主版本号(major):当你做了不兼容的 API 修改,如 angular1.x.x=>angular2.0.0
  • 次版本号(minor):当你做了向下兼容的功能性新增,可以理解为Feature版本,如angular1.5.5增加了新功能,发布1.6.0
  • 修订号(patch):当你做了向下兼容的问题修正,可以理解为Bug fix版本。如angular1.5.4修改了bug,发布angular1.5.5。
    这三个数字之后,还可以用三个修饰符,alpha、beta、rc,分别表示内测版本、公测版本、正式版本的候选版本。在正式版本发布前,如需发布先行版本,则可使用这三个修饰符。如React的版本发布日志:


    语义化版本规则_第1张图片
    3649824190-5ad41542bc553_articlex.png

^表示主版本号不变,
~表示要保证次版本号不变,

"jquery": "^2.1.0", //安装的时候就会下载2.x.x的最新版,即2.2.4
"jquery": "~2.1.0", //安装的时候就会下载2.1.x的最新版,即2.1.4
参考文献:

Semver(语义化版本号)扫盲
语义化版本 2.0.0

你可能感兴趣的:(语义化版本规则)