https://docs.npmjs.com/cli/v7/using-npm/semver#tilde-ranges-123-12-1
npm vesion 的几个概念
比如webpack 5.37.1
版本,在npm这类版本号X.Y.Z
可以理解为major.minor.patch
。
- major 主要的
- minor 次要的
- patch 修补,补丁
当然也有另外一种变形预先版本,X.Y.Z-N
,可以理解为major.minor.patch-[premajor|preminor|prepatch|prerelease]
。
还有一点就是涉及npm
升版本的操作,npm version [major|minor|patch|premajor|preminor|prepatch|prerelease]
。
比如:npm version: 1.1.0
-
npm version patch
: 1.1.1 -
npm version prepatch
:1.1.1-0,npm version prepatch
:1.1.2-0 -
npm version minor
: 1.2.0 -
npm version preminor
:1.2.0-0,npm version preminor
:1.3.0-0 -
npm version major
: 2.0.0 -
npm version premajor
:2.0.0-0,npm version premajor
:3.0.0-0
那么npm version prerelease
是做什么的?
假设有版本号:1.1.1
-
npm version prerelease
: 1.1.1-0,npm version prerelease
:1.1.1-1。会在后面加一个prerelease
主版本不变,其他版本往上加。
范围range
- 'X.Y.Z - U.V.W',会尽可能下载范围内最新的版本。
>=X.Y.Z && <= U.V.W
-
X.Y.x
下载X.Y.x
的major
固定minor
固定,patch
最新,依次类推。x
则表示最新版本
~
表示范围内到下个版本,根据.
来表示限制范围是否是major 或者
minor`,
- ~1.2.3 := >=1.2.3 <1.(2+1).0 := >=1.2.3 <1.3.0 等同于
1.2.3-1.3.0
- ~1.2 := >=1.2.0 <1.(2+1).0 := >=1.2.0 <1.3.0 等同于
1.2.x
- ~1 := >=1.0.0 <(1+1).0.0 := >=1.0.0 <2.0.0 等同于
1.x
^
表示范围是:版本号从最左边开始第一个非0的版本保持不动。
-
1.2.3
,最左边第一个是1,表示从1.2.3开始,小于2x
-
0.7.2
,最左边第一个是7,表示从0.7.2开始,小于0.8.0
-
0.7.2
,最左边第一个是7,表示从0.7.2开始,小于0.8.0