semver是版本规范,也是npm中的一个库。最近有机会使用到这个库,因此在这里记录一下。

我的需求很简单,就是在一堆版本号中,取某一个范围内的最大版本号。这里面给出两个条件,一堆版本号和一个范围;需要的结果是最大版本号。

正巧,这正是semver功能的一个子集。

semver中有

  • 类,Range

  • 函数,maxSatisfying

因此,就有了下面的代码

const Range = require('semver/classes/range')
const maxSatisfying = require('semver/ranges/max-satisfying')
const getVersions = require('./getVersions')const targtVersion = maxSatisfying(getVersions(), new Range('^3.0.0'))

在给定的versions中,取3.0版本中的最大版本号。

意外发现

当然这个意外发现完全源于我对semver的陌生。

“^3.0.0”就是版本号的选择范围。这个范围不会包含3.0.0-0这种形式的版本号。而用npm version preminor/prepatch/prerelease生成预览版并发布,^3.0.0或者~3.0.0这种选择范围会将预览版的版本号过滤掉,这一点确实很有用啊。

semver安装

npm install --save semver

用semver解析版本号相关推荐

  1. semver 源码解析(Npm library)

    semver 源码解析(Npm library) 文章目录 semver 源码解析(Npm library) 正文 0. 基本信息 1. 源码解析 1.1 核心类型 1.2 SemVer 类型实现核心 ...

  2. 语义化版本控制模块-Semver

    执行某些命令的时候,你是否遇到过提醒版本过低,需要升级版本的提示,那么对于版本号,是以一个怎样的规则来进行的限制和匹配的呢? semver, 是一个语义化版本号管理的模块,可以实现版本号的解析和比较, ...

  3. ActiveMQ源码解析 建立连接

    作为一个消息中间件,有客户端和服务端两部分代码,这次的源码解析系列主要从客户端的代码入手,分成建立连接.消息发送.消息消费三个部分.趁着我昨天弄明白了源码编译的兴奋劲头还没过去,今天研究一下建立连接的 ...

  4. @mpx/cli 脚手架源码解析

    前言 Mpx是一款致力于提高小程序开发体验的增强型小程序框架,通过Mpx,我们能够以最先进的web开发体验(Vue + Webpack)来开发生产性能深度优化的小程序. 下面说说mpx脚手架的源码: ...

  5. Spring改变版本号命名规则:此举对非英语国家很友好

    要想改变命运,首先改变自己.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BA ...

  6. 字符串版本号比较(Java)

    APP的版本升级更新,会用到版本号的对比.根据版本号去解析埋点上报得信息. 正则匹配方式解析版本号中字符和数字做对比,默认字符大于数字(版本号1 是否大于等于 版本号2).详见以下代码 @Slf4j ...

  7. maven package install 时候 版本号一直引用无效的问题

    代码分为平台和业务系统两部分,业务系统引用平台代码 代码中有父级.子级项目,子级项目版本号是引用的父级定义的版本号,为了版本号方便管理 业务系统引用了平台代码的时候,mvn package项目,报错如 ...

  8. js读取外部json指定字段值完整代码_前端工程化 剖析npm的包管理机制(完整版)...

    导读 现如今,前端开发的同学已经离不开 npm 这个包管理工具,其优秀的包版本管理机制承载了整个繁荣发展的NodeJS社区,理解其内部机制非常有利于加深我们对模块开发的理解.各项前端工程化的配置以加快 ...

  9. 腾讯IVWEB前端工程化工具feflow思考与实践

    本篇文章主要介绍腾讯IVWEB团队从0到1在工程化的思考和实践.feflow的全称是Front-end flow(前端工作流),致力于提升研发效率和规范的工程化解决方案.愿景是通过feflow,可以使 ...

最新文章

  1. Ubuntu16.04 安装Qt
  2. matlab智能小车避障,Arduino智能小车系列教程4——超声波避障
  3. 泰拉瑞亚服务器权限文件,泰拉瑞亚云服务器权限
  4. 计算一个尽可能大的素数
  5. FEIM Studios 团队欢迎您加入
  6. python中深拷贝和浅拷贝_**Python中的深拷贝和浅拷贝详解
  7. XML指南——XML元素
  8. 《高可用架构·中国初创故事(第3期)》一1.4 认同企业文化
  9. C Primer Plus (Stephen Prata 著)
  10. 深度学习领域堪称圣经的书籍(深度学习又称之为花书)-由图灵奖获得者Yoshua Bengio所著
  11. Tango学习笔记(1)
  12. 可视化——统计图表介绍
  13. 免费邮箱怎么注册?创建注册邮箱帐号免费吗?
  14. ORA-00904: invalid identifier
  15. c#FileStream文件读写可能会出现乱码
  16. linux 内存映射-ioremap和mmap函数
  17. python json接口数据提取_返回数据中提取数据的方法(JSON数据取其中某一个值的方法)...
  18. 如何开发出成功的iOS应用(流程图)
  19. 加法器的实现(半加器,全加器,行波进位加法器,超前进位加法器,流水线加法器)
  20. Android Studio中注解处理器(annotation processors)的增量编译失败分析

热门文章

  1. python37降到36原来的包还可以用吗_Python学习之路37-使用asyncio包处理并发
  2. 《现代电力电子学与交流传动》读书笔记(二)
  3. 现代科技概论_现代科技概论课程:天文与宇宙2
  4. 繁體漢化技術研究?繁體转简体中文要注意的地方
  5. Apache Spark 练习七:使用Spark分析化妆品电子商务数据
  6. 太阳光轨迹软件_太阳光自动跟踪设计_图文(精)
  7. vs2015编译运行quake3
  8. 命令提示符的打开以及简单的Dos命令
  9. 安川服务器怎样显示母线电压,请问谁知道安川变频器L1000A7.5kw的变频器的直流母线电压范围啊...
  10. 化妆晚会 - UPCOJ 3613 - 二分查找