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

你会发现很多项目的依赖包版本号前面会加上~,或者是^,以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://blog.csdn.net/u014291497/article/details/54427103)的问题就是因为package.json使用^1.5.7造成的,1.6版本的包与现有代码不兼容。

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

参考链接:Node and Npm Version Numbering: Guide and Best Practices

转载自【http://blog.csdn.net/u014291497/article/details/70148468】

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏pangguoming

mongo 3.0 备份和还原数据库 ,及too many positional arguments错误

在mongo 3.0的操作 备份示例 ./mongodump -h localhost -d liongo -o ./ 错误方式: ./mongorestore...

1K3
来自专栏我的博客

安卓开发常用快捷键

快捷键               功能                              范围 ctrl + shift + o    自动导入相关...

2998
来自专栏王磊的博客

asp.net mvc3.0第一个程序helloworld开发图解

步骤一:新建asp.net mvc3.0项目 ? ? (选择Razor模板) 步骤二:创建控制器 ? ? 步骤三:控制器源码内右键创建对应视图 ? ? 步骤四:...

3366
来自专栏Petrichor的专栏

Ubuntu: 虚拟机 安装

1173
来自专栏python3

python 模块

这打印的,就是python的全局环境变量。这里面都是路径,路径里面存的都是什么呢?就是python导入一个库或者python内部自己进行调用的时候,它就在这些路...

883
来自专栏蓝天

检测Linux系统是否支持某系统调用

check_syscall.zip 随内核版本的变化,会增加一些新的系统调用,但如果glibc没有跟上,则不能直接调用,这个时候可以自己包装一下。如果想知道内...

883
来自专栏24k

在Coding.net创建项目开发

3026
来自专栏河湾欢儿的专栏

nginx服务的快速搭建(跨域)

原文地址https://github.com/gs3170981/nginx_quick 1.下载以后有一个server.js 文件

1061
来自专栏GreenLeaves

三、公共语言运行时(CLR)简介

二、源代码=>程序集及程序集概念介绍中介绍了源代码通过C#编译器生成程序集(或者可执行应用程序exe)的整个过程,本文主要介绍公共语言运行时与程序集的关系. 1...

2406
来自专栏Kotlin入门系列

win7基础 cmd 桌面空白处,按住shift后,通过右键菜单启动cmd窗口

2585

扫码关注云+社区

领取腾讯云代金券