加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

NPM依赖包版本号~和^的区别及最佳实践

发布时间:2020-12-14 01:38:00 所属栏目:百科 来源:网络整理
导读:你会发现很多项目的依赖包版本号前面会加上~,或者是^,以Angular2为例: 那么~和^的作用和区别是什么呢? ~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0 ^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3

你会发现很多项目的依赖包版本号前面会加上~,或者是^,以Angular2为例:

那么~和^的作用和区别是什么呢?

  • ~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0
  • ^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0

详细可参考http://stackoverflow.com/questions/22343224/whats-the-difference-between-tilde-and-caret-in-package-json

那么该如何选择呢?当然你可以指定特定的版本号,直接写1.2.3,前面什么前缀都没有,这样固然没问题,但是如果依赖包发布新版本修复了一些小bug,那么需要手动修改package.json文件;~和^则可以解决这个问题。

但是需要注意^版本更新可能比较大,会造成项目代码错误,比如这篇文章(http://www.52php.cn/article/p-aydigstk-sn.html)的问题就是因为package.json使用^1.5.7造成的,1.6版本的包与现有代码不兼容。

所以建议使用~来标记版本号,这样可以保证项目不会出现大的问题,也能保证包中的小bug可以得到修复。

或者版本号写*,这意味着安装最新版本的依赖包,但缺点同上,可能会造成版本不兼容,慎用!

参考链接:https://scotch.io/tutorials/node-and-npm-version-numbering-guide-and-best-practices#-a-specific-version

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读