2016-09-20 313 views
0

当我执行我的package.json的NPM安装时,NPM始终会自动选择某些软件包的较新版本。使NPM安装特定版本package.json

尽管我制定了这些软件包的特定版本,但确实如此。我如何强制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安装(拆卸node_modules文件夹后),NPM安装angular2和角材料的新版本,即使我需要的特定的人。

结果之后安装:

回答

0

NPM没有一个分辨率选项,如凉亭,在那里你可以强制NPM只取包的特定版本。 当您运行npm install时,它将检查并安装package.json文件中的软件包,还会安装所有这些软件包的依赖项。如果某些软件包需要比package.json中指定的更新版本的angular2,那么它将安装更新的版本。

在使用^定义package.json中的版本时也要小心,例如“babel-core”:“^ 6.17.0”。 您可能拥有一个完美的工作环境,但有一天当出于某种原因重新安装或更新节点模块时,一些新版本的软件包可能需要较新版本的angular2,并且您可能会遇到同样的问题。

对于这种情况,请检查package.json文件中的哪个软件包作为依赖项需要比指定文件更新的angular2和angular-material版本。