npm包版本管理

336 阅读1分钟

问题

  • 执行semver.satisfies("1.70.0-beta.", ">=1.54.0") 预期希望为true ,但返回false ,不符合预期。原因是satisfies方法对预发布版本的比较不起作用。

image (1).png

  • 由于目前业务场景不存在两个预发布版本的比较,故可以对其中一个预发布版本进行去除后对比,如下图所示:

image12.png

版本格式

  • 由于需要对包版本进行处理,那包版本具体格式是怎么样的呢?可详见:semver.org/#spec-item-…,除了常见的major.minor.patch格式外,还会携带pre-release和build-metadata信息(示例可见截图)。

image222.png

    • major.minor.patch-[pre-release]+[build-metadata]  

pre-release

  • 格式为major.minor.patch-{identifier}.{identifier}.{identifier}
    • identifier必须是数字、大小写字母或连字符组成的非空字符串。比如:1.0.0-alpha

build metadata

  • 在patch或预发布后面加上"+"和一串由"."连接的标识符
    • 格式为major.minor.patch+{identifier}.{identifier}.{identifier}或者 major.minor.patch-{pre-release}+{identifier}.{identifier}.{identifier}。如:1.0.0-alpha+001, 1.0.0+20130313144700

版本号标签

  • 常用的版本号标签有latest(默认),alpha(内测), beta (公测), next(下一个), rc( 候选), experimental(实验)

版本号比较大小

  • 预发布版本优先级低于正式版本,如1.0.1-alpha.1 < 1.0.1,1.0.0-alpha.1 < 1.0.0-beta < 1.0.0
  • build metedata不参与版本的比较