版本号学习笔记

版本号

作为一名前端工程师,相信大家对npm等包管理工具都比较熟悉,这里抛出一个先前碰到的问题:

冲突

假设我们存在一个多个项目共用的构建环境runtime,构建工具所依赖的包都安装在此runtime中,然后各个项目的负责人或者开发人员一起来维护这个公用runtime的package.json。那么非常有可能,包之间的依赖会出现冲突,特别是当包存在Peer Dependencies的情况(之前的低版本npm安装会导致NPM ERR报错):

后续

在了解了什么是平等依赖以及为什么安装失败后,解决这个问题的办法有很多,比如:

  • 根据项目拆分runtime
  • 升级依赖包(防止breaking changes)
  • 更换构建实现方式
  • 等等

尽管如此,我们还是非常有必要了解一下Npm包管理工具是怎么做的?

版本比较

在此之前,我们先来了解一下语义化版本,网站介绍的很详细,这里直接介绍怎么进行对比的。

这里强调一下版本号之间的比较,必须把版本拆分成主版本号Major次版本号Minor修订号Patch以数值比较例如: 1.0.0 < 2.0.0 < 2.1.0 < 2.1.1

主版本号Major次版本号Minor修订号Patch都相同时,再比较先行版本号Pre-release,先由左到右根据.标识符分隔比较,直到找到第一个差异值后决定(数值以高低相比,字母以ASCII的排序比较,数字与字母比则数字优先级较低),比如:1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0- rc.1 < 1.0.0

指定范围

package.json中指定包版本范围会更为复杂一些:

A version range is a set of comparators which specify versions that satisfy the range.

comparators其实就是

Todo...

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张狗蛋的技术之路

数据库内部存储结构探索

 本文是左耳耗子推荐的Medium上的一篇关于MySQL的文章Some study on database storage internals,本人觉得文章十分...

1492
来自专栏Golang语言社区

高并发服务器的设计--内存池的设计

不同的业务,设计也不尽相同,但至少都一些共同的追求,比如性能。 做服务器开发很多年了,有时候被人问到,服务器性能是什么呢?各种服务器间拼得是什么呢? 简单的回答...

5117
来自专栏lonelydawn的前端猿区

Vuex从入门到精通(一)

状态管理 状态的初始化 状态管理,我们应该并不陌生。 举个例子,超市里新进了一批商品,管理员给这些商品分类,建立索引,然后按照顺序放入货架的过程就是最简单的状态...

2047
来自专栏Python爱好者

Java基础笔记01

1396
来自专栏腾讯数据库技术

Linux调度原理介绍和应用(前篇)

2044
来自专栏前端杂货铺

deno深入揭秘及未来展望

node.js之父Ryan Dahl在一个月前发起了名为deno的项目,项目的初衷是打造一个基于v8引擎的安全的TypeScript运行时,同时实现HTML5...

921
来自专栏信安之路

代码审计之 zzzphp

想想很久都没有发布代码审计的文章了,最近忙于开发任务加上最近状态不太好,哎研发dog。

743
来自专栏熊二哥

快速入门系列--MVC--03控制器和IOC应用

    Asp.net MVC也接触好久了,但由于自己一直主要负责后台,尤其是数据库方面的工作对于该框架并没有一个很好的了解,尤其是蒋金楠大师的ASP.NET ...

1756
来自专栏Java技术分享圈

杨老师课堂_Java教程第一篇之认识计算机

*接下来就是确定、确定、确定就ok! *检验环境变量是否成功在DOS命令行里输入javac或java,如果正常显示一些内容,说明安装成功并且配...

612
来自专栏deed博客

day01笔记

1565

扫码关注云+社区