我来自Java / Maven环境,无法理解npm中的版本控制。这似乎很脆弱。
如何确保npm包中的所有版本都正确? 似乎 @angular 的某些部分具有独立于其他Angular包的版本(例如 @ angular / router , @ angular / animations < /强>) 可以像这样使用通配符来保持所有模块的版本正确吗?
"dependencies": {
"@angular/common": "^2.4.*",
"@angular/compiler": "^2.4.*",
"@angular/core": "^2.4.*",
"@angular/forms": "^2.4.*",
"@angular/http": "^2.4.*",
"@angular/platform-browser": "^2.4.*",
"@angular/platform-browser-dynamic": "^2.4.*",
"@angular/router": "^3.4.*",
"core-js": "^2.4.1",
"font-awesome": "^4.7.0",
"primeng": "^2.0.*",
"rxjs": "^5.1.0",
"zone.js": "^0.7.6"
},
答案 0 :(得分:0)
npm使用semantic versioning:
<major>.<minor>.<patch>
您可以控制如何应用版本控制(不支持通配符)。版本号前面的符号表示在应用更新时如何应用升级(即npm更新):
^1.0.0 : increment to latest minor version. i.e. matches 1.x.x
~1.0.0 : increment to latest patch i.e. matches 1.0.x
1.0.0 : matches exact version
所有三种升级模式都应该是非破坏性和向后兼容的。然而,在实践中,确实发生了意想不到的副作用,有时候一个不间断的变化最终会破坏别的东西。在这种情况下,一旦确定问题,将应用另一个补丁以确保向后兼容性。
也支持范围:
>=1.2.7 <1.3.0