2016-09-20 282 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版本。