zoukankan      html  css  js  c++  java
  • Node.js中package.json中库的版本号详解(^和~区别)

    当我们查看package.json中已安装的库的时候,会发现他们的版本号之前都会加一个符号,有的是插入符号(^),有的是波浪符号(~)。那么他们到底有什么区别呢?先贴一个例子,对照例子来做解释:

    [java] view plain copy
     
    1. "dependencies": {  
    2.     "bluebird": "^3.3.4",  
    3.     "body-parser": "~1.15.2"  
    4.   }  


    bluebird的版本号:^3.3.4

    body-parse的版本号:~1.15.2

    当我们使用最新的Node运行‘npm instal --save xxx',的时候,他会优先考虑使用插入符号(^)而不是波浪符号(~)了。

    这对于你来说意味这什么呢?首先我们需要理解这两者(~和^)的区别。

    波浪符号(~):他会更新到当前minor version(也就是中间的那位数字)中最新的版本。放到我们的例子中就是:body-parser:~1.15.2,这个库会去匹配更新到1.15.x的最新版本,如果出了一个新的版本为1.16.0,则不会自动升级。波浪符号是曾经npm安装时候的默认符号,现在已经变为了插入符号。

    插入符号(^):这个符号就显得非常的灵活了,他将会把当前库的版本更新到当前major version(也就是第一位数字)中最新的版本。放到我们的例子中就是:bluebird:^3.3.4,这个库会去匹配3.x.x中最新的版本,但是他不会自动更新到4.0.0。

    总结一下:

    ~1.15.2 :=  >=1.15.2 <1.16.0     

    ^3.3.4 := >=3.3.4 <4.0.0

    最后解释下之前提到的minor verision和major version:

    1.15.2对应就是MAJOR,MINOR.PATCH:1是marjor version;15是minor version;2是patch version。

    MAJOR:这个版本号变化了表示有了一个不可以和上个版本兼容的大更改。

    MINOR:这个版本号变化了表示有了增加了新的功能,并且可以向后兼容。

    PATCH:这个版本号变化了表示修复了bug,并且可以向后兼容。

    因为major version变化表示可能会影响之前版本的兼容性,所以无论是波浪符号还是插入符号都不会自动去修改major version,因为这可能导致程序crush,可能需要手动修改代码。

  • 相关阅读:
    Flink实战(七十三):FLINK-SQL使用基础(一)简介(一)入门
    Flink实战(七十二):监控(四)自定义metrics相关指标(二)
    k8s启动
    k8s containerd
    安装containerd
    k8s镜像
    crictl
    Kubernetes: Using containerd 1.1 without Docker
    docker images --digests
    ctr images pull docker.io/library/redis:latest
  • 原文地址:https://www.cnblogs.com/bydzhangxiaowei/p/8789061.html
Copyright © 2011-2022 走看看