Version & Dependencies
Semantic version
一般来说,版本号主要分为三部分:主版本号(major)
、次版本号(minor)
和修补版本号(patch)
。以2.6.6
为例,major 为 2,minor 为 6,patch 为 6。
- major: 主版本号,新的架构调整或不兼容的修改被加入公共 API 必须递增,次版本号和修订号必须归零。
- minor: 次版本号,新增功能,兼容老版本,或公共 API 标记为弃用时必须递增,修订号必须归零。
- patch: 修订号,修复 bug,兼容老版本。
Symbols
^
: 升级 minor + patch- 如:
^2.6.6
,表示更新版本范围>=2.6.6 <3.0.0
,可以是2.x.x
。
tip当 major 为零的阶段(0.y.z),不会更 minor,只会更新 patch,因为该阶段相对不稳定。
- 如:
^0.6.6
,表示更新版本范围>=0.6.6 <0.7.0
,可以是0.6.x
。 - 如:
^0.6
,表示更新版本范围>=0.6.0 <0.7.0
,可以是0.6.x
。
- 如:
~
: 升级 patch- 如:
~2.6.6
,表示更新版本范围>=2.6.6 <2.7.0
,可以是2.6.x
,兼容 patch。 - 如:
~2.6
,表示更新版本范围>=2.6.0 <2.7.0
,可以是2.6.x
,兼容 patch。 - 如:
~2
,表示更新版本范围>=2.0.0 <3.0.0
,可以是2.x.x
,兼容 minor 和 patch。
- 如:
*
:升级到 latest- 表示任意版本。如:
*
,表示更新版本范围为>=0.0.0
的任意版本。
- 表示任意版本。如:
比较符号:最直观,但由于粗粒度控制,用得不多
>
: 表示只要大于这个版本的安装包都行,如>2.0.0
。>=
: 表示只要大于或等于这个版本的安装包都行,如>=2.0.0
。<
: 表示只要小于这个版本的安装包都行,如<2.0.0
。<=
: 表示更新版本范围只要小于或等于这个版本的安装包都行,如<=2.0.0
。
依赖类型
dependencies
代码运行时所需要的依赖。
devDependencies
开发依赖,就是那些只在开发过程中需要,而运行时不需要的依赖,这只是一种理想约定,如果是开发某个项目,不是给别人用的库,在项目中执行 npm install
的时候,会安装 dependencies
+ devDependencies
的所有模块,如果是开发某个库,别人的项目依赖了你这个库,在别人的项目执行 npm install
的时候,只会安装间接依赖的时候,只会安装你库中 dependencies
声明的模块。
peerDependencies
同伴依赖,它用来告知宿主环境需要什么依赖以及依赖的版本范围。如果宿主环境没有对应版本的依赖,在安装依赖时会报出警告,自身项目环境中并不会安装这里声明的依赖。
optionalDependencies
可选依赖,这种依赖即便安装失败,Npm/Yarn 也会认为整个依赖安装过程是成功的。可选依赖适用于那些即便没有成功安装可选依赖,也有后备方案的情况。
bundledDependencies
打包依赖,在发布包时,这个数组里的包都会被打包打包到最终的发布包里,需要注意 bundledDependencies
中的包必须是在 devDependencies
或 dependencies
声明过的。