当我执行我的package.json的NPM安装时,NPM会自动选择某些软件包的较新版本。
即使我制定了这些软件包的特定版本,它仍然这样做。如何强制NPM仅采取特定版本?
我的dependencies.json:
"dependencies": {
"@angular/common": "2.0.0-rc.5",
"@angular/compiler": "2.0.0-rc.5",
"@angular/core": "2.0.0-rc.5",
"@angular/forms": "2.0.0-rc.5",
"@angular/http": "2.0.0-rc.5",
"@angular/platform-browser": "2.0.0-rc.5",
"@angular/platform-browser-dynamic": "2.0.0-rc.5",
"@angular/router": "3.0.0-rc.1",
"@angular/upgrade": "2.0.0-rc.5",
"angular2-meteor": "0.7.0-beta.1",
"angular2-material/core": "2.0.0-alpha.7-9",
"angular2-material/grid-list": "2.0.0-alpha.7-9",
"angular2-material/card": "2.0.0-alpha.7-9",
"angular2-material/button": "2.0.0-alpha.7-9",
"angular2-material/icon": "2.0.0-alpha.7-9",
"angular2-material/checkbox": "2.0.0-alpha.7-9",
"angular2-material/sidenav": "2.0.0-alpha.7-9",
"angular2-material/menu": "2.0.0-alpha.7-9",
"angular2-material/input": "2.0.0-alpha.7-9",
"angular2-material/toolbar": "2.0.0-alpha.7-9",
"angular2-material/slider": "2.0.0-alpha.7-9",
"angular2-meteor-polyfills": "0.1.1",
"bcrypt": "0.8.7",
"client": "0.0.1",
"hammerjs": "^2.0.8",
"meteor-node-stubs": "~0.2.0",
"reflect-metadata": "0.1.8",
"rxjs": "5.0.0-beta.11",
"tether": "1.3.6",
"zone.js": "0.6.17"
}
当我执行npm-install(删除node_modules文件夹之后)时,即使我需要特定的版本,NPM也会安装更新版本的angular2和angular-material。
答案 0 :(得分:0)
NPM没有像bower这样的解决方案选项,您可以强制NPM只采用特定版本的包。 运行 npm install 时,它不仅会检查并安装package.json文件中的软件包,还会检查所有这些软件包的依赖项。如果某个软件包需要比package.json中指定的更新版本的angular2,那么它将安装更新版本。
使用^定义package.json中的版本时也要小心,例如" babel-core":" ^ 6.17.0" 。 您可能拥有一个完美的工作环境,但有一天,当您因某种原因重新安装或更新节点模块时,某些较新版本的软件包可能需要更新版本的angular2,例如,您可能会遇到同样的问题。 / p>
对于这种情况的结论,检查package.json文件中的哪个包作为依赖项,需要比指定的版本更新版本的angular2和angular-material。