\
版本格式可以是下面任一种:
- version 完全匹配
-
version 大于这个版本
-
=version大于或等于这个版本
- <version
- <=version
- ~version 非常接近这个版本
- ^version 与当前版本兼容
- 1.2.x X代表任意数字,因此1.2.1, 1.2.3等都可以
- http://... Unix系统下使用的tarball的URL。
- * 任何版本都可以
- ""任何版本都可以
- version1 - version2 等价于 >=version1 <=version2.
- range1 || range2 满足任意一个即可
- git... Git地址
- user/repo
devDependencies
"de-applyform": "git+http://chencs:[persernal token ]@gitlab.gengyun.cn/da-front-end/de-applyform.git"
可选字段。如果只需要下载使用某些模块,而不下载这些模块的测试和文档框架,放在这个下面比较不错。
{ "name": "my-project-name", "version": "0.1.0", "devDependencies": { "grunt": "~0.4.5", #这个是最新的 "grunt-contrib-jshint": "~0.10.0", "grunt-contrib-nodeunit": "~0.4.1", "grunt-contrib-uglify": "~0.5.0" } }
当我们使用最新的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,可能需要手动修改代码。