5.2 npm 版本知识总结
1. npm 发布包的版本指定规则
使用 Npm 发布一个包的时候,往往要遵循 x.y.z 的规则,发布的第一个版本一般为 1.0.0。
- z 补丁号。修改某个功能的 Bug 时,z 值 +1 变成 1.0.1;
- y 小版本号。增加一个新功能,且不影响已有功能,y 值 +1 变成 1.1.0;
- x 大版本号。引入新的变化,破坏向后兼容,x 值 +1 变成 2.0.0。
2. 关于向后兼容与向前兼容
向前兼容和向后兼容可以用下面这个例子方便理解。
- 向后兼容:Windows 10要能运行为Windows 3.1开发的程序;
- 破坏向后兼容:新版本的系统不能运行老版本系统上的程序,可以理解为整容的跟以前完全不一样了;
- 向前兼容:Windows 3.1要能运行为Windows 10开发的程序。
3. package.json 中包版本 ~ 与 ^ 说明
package.json 中会记录很多包的版本号,前面大多出现 ^ 和 ~ 符号,表示某个包的版本号取值范围,包的版本号在这个范围之内都是可以的。
"devDependencies": {
"axios": "^0.15.3",
"babel-eslint": "^6.1.2",
"babel-plugin-dva-hmr": "^0.3.2",
"babel-plugin-import": "^1.1.1",
"draftjs-to-html": "^0.7.0",
"eslint": "^3.17.1",
"eslint-config-airbnb": "^9.0.1",
"eslint-plugin-import": "^1.16.0",
"eslint-plugin-jsx-a11y": "^1.4.2",
"eslint-plugin-react": "^5.1.1",
"less-vars-to-js": "^1.1.2",
"path-to-regexp": "^1.7.0",
"rc-tween-one": "^1.0.0",
"redbox-react": "^1.2.10",
"roadhog": "0.6.0-beta.6"
},
假定某个包的版本是 1.4.0
- ~1.4.0表示:>=1.4.0 && < 1.5.0说明:小版本不变,补丁号可以取最大值。
- ^1.4.0表示:>=1.4.0 && < 2.0.0说明:大版本号不变,小版本号可以取最大值。