node内置API ------ semver

语义化版本SemVer管理npm依赖包的工具

应用场景:实现一个插件化的系统,并定期检测更新,对不当的更新做出警告。

学习这个API的理由,在随着web框架 迭代的过程中 先后衍生出了 vue-cli 、create-react-app cli等等一系列自动化的脚手架,视乎不再了解 webpack-cli 脚手架 的项目搭建实现过程及优化。 

官方文档(规则):语义化版本 2.0.0 | Semantic Versioning

常见版本英文缩写

Snapshot:快照

也被称为开发版,处于开发阶段。这个版本的代码禁止用于生产环境。

Alpha (α):内测版

内部交流或专业测试人员测试使用。

Preview:预览版

与 Alpha 类似,有时还会细分 M1,M2 版本。

Beta (β):公测版

专业爱好者大规模测试使用,存在一些 Bug,不适合一般用户使用。

Gamma (λ)

比较成熟的测试版。

RC (Release Candidate):候选版本

处于 Gamma 阶段,该版本已经完成了全部功能并清除了大量的 Bug。

一般来说,Alpha -> Beta -> Gamma 是迭代的关系,RC1 -> RC2 是取舍的关系。

Release:发行版本

正式发行的版本,已经经过测试,一般不会出现严重的 Bug,适合一般用户使用。

对于不开源的软件, Release 可能是带有免费使用时间限制的版本。

Stable:稳定版

同 Release 版本。

npm i 下载包的规则 以及 package.json 中的 dependencies 与 devDependencies 字段中关于包的定义

关于 公用API 的 ^ 符号说明

"vue": "^3.2.41" 中的 ^ 符号 是指 下一次 npm i 可以下载 同一主版本号并不小于指定版本号的版本号

意思就是:npm下次可以下载 主版本号为3的包 次版号和修订号 只能是大于或小于这个版本号

案例: 这次安装的是 "vue": "^3.2.41" 下次可以安装 "vue": "^3.2.41" 或 "vue": "^3.3.41" 也可以是 "vue": "^3.2.43" 但不能是 "vue": "^4.2.41" 也不能是 "vue": "^3.1.41"

关于 公用API 的 ~ 符号说明

"vue": "~3.2.41" 中的 ~符号 是指下一次 npm i 可以下载 同一主版本和次版本号并不小于指定版本号的版本号

这个就不详细说了,可以照着上面的案例 规则去思考

用来指定一个版本号范围 > 、<、 = 、>= 、<=、-

'>2.1'

# 下次 npm i 下载的包只能是 1.0.0 到 1.2.0 之间的包或等于它们的包
'1.0.0 - 1.2.0'

npm i vue@"2.7.1 - 2.7.13"

# 注意使用 '-' 的时候,必须两边都有空格。

|| : 表示或者

'^2 <2.2 ||> 2.3'

x、X、* :表示通配符

# 对应所有的版本
'*'

# 对应所有主版本号为 3 的版本号
'3.x'
npm i vue@3.x

Semver  API的使用

是一个专门分析Semantic Version(语义化版本)的工具

下载

# node 内置了,所以不用下载
npm install semver

比较两个版本号的大小

// 导入 semver 模块
const semver = require('semver')

// 从左到右的比较 就是左边的版本是否比右边大 left > right
semver.gt('1.2.3', '2.3.4')    // false

// 从右到左的比较 就是右边的版本是否比左边大 right > left
semver.lt('1.2.3', '2.3.4')    // true

验证版本号是否合法,返回 null 即不合法

// 导入 semver 模块
const semver = require('semver')

semver.valid('1.2.3')   // '1.2.3'   合法

semver.valid('a.b.c')   //  null     不合法

提取版本号

// 导入 semver 模块
const semver = require('semver')

// 提取全部的版本号 主版本号.次版本号.修订号
semver.clean(' =v1.2.3')  // '1.2.3'

// 提取 主版本号
semver.major( '1.2.3' )   // '1'

// 提取次版本号
semver.minor( '1.2.3' )   // '2'

// 提取修订号
semver.patch( '1.2.3' )   // '3'

定义版本号

// 导入 semver 模块
const semver = require('semver')

semver.coerce('v2')

console.log( semver.coerce('v2') )
// 输出结果
// SemVer {
  options: { loose: false, includePrerelease: false },
  loose: false,
  raw: '2.0.0',
  major: 2,
  minor: 0,
  patch: 0,
  prerelease: [],
  build: [],
  version: '2.0.0'
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值