今天在學習webpack的時候用到了npm 由於學習vue的時候一直只是停留在npm install上 因而乎今天看了一些博客和官方文檔 從新瞭解了一下npm的相關知識vue
package.json是經過npm init建立時生成的,package.json文件中會記錄項目中所須要的模塊。記錄的只是每一個模塊的基本信息。模塊名稱和大版本信息。node
例如axios在package.json中 webpack
在使用npm install的時候會自動生成一個package-lock.json的文件,package-lock.json文件則會記錄每一個模塊的詳細信息,如模塊的具體版本號和各個模塊所依賴的子模塊的信息。ios
而axios在package-lock.json中 web
npm install的過程大體就是從package.json中讀取全部的依賴信息,而後再與node_modules中已經安裝的依賴進行對比,若是沒有則經過package-lock.json獲取相應版本號下載安裝.若是已經存在則會經過package-lock.json檢查更新。npm
進行更新的原則就是其範圍是在package.json中對應安裝包版本所容納的版本。^就是指兼容該版本之後的小版本而不更新大版本,如上圖package.json所示,"vue":"^2.5.2"也就是指範圍應該在>=2.5.2和<3.0.0之間(tips:網上大多數帖子說的比較籠統,而參考其中的一篇帖子大體就是,^會忽視版本號開頭爲0的數字,也就是說"axios":"0.19.0"的範圍應該在>=0.19.0和<0.20.0之間)json
dependencies是生產環境所須要的依賴如上圖vue,elementUI,axios等。axios
npm install ... --save 經過--save的方式來保存到dependencies中
複製代碼
而Devdependencies是開發環境所須要的依賴如webpack,babel-loader等。Devdependencies只存在與開發階段,也就是說項目打包事後不會用到這些依賴,babel
npm install ... --save-dev 經過--save-dev的方式來保存到Devdependencies中
複製代碼
因此在瀏覽或者使用其餘人項目的時候咱們也就能夠進行選擇性的安裝依賴來節省時間。npm install是將package.json下面的全部依賴報所有進行安裝,而npm install --production則只是安裝dependencies下的依賴而不安裝Devpendecies下的。學習
第一次寫有點小緊張~~~本人現階段也是在邊學邊練,可能技術儲備還不夠。若是哪裏寫得有問題但願各位大佬及時指出!!!