package.json和package-lock.json區別使用+如何更新一個包

修改某一個包

升級某一個包可以直接修改package.json 然後npm install 就 更新該包了。

#例如 element-ui 爲例子
#查看當前版本
npm ls element-ui
#可以手動修改package.json 的element-ui
#這個時候package.json和package-lock.json不一致,然後再 
npm install
#這個時候package-lock.js也會更新和package.json的element-ui版本一致了

package.json和package-lock.json使用順序

npm 5.x 發佈以來到現在的5.6.0 lock的作用變更過好多次,現在網上很多小白文都是停留在以前的文檔翻譯。從npm3.x更新到了npm5,但是發現執行 npm i 時的現象跟網絡上的科普文不太一致。有提到不管怎麼修改package.json文件,重複執行npm i,npm都會根據lock文件描述的版本信息進行下載。也有提到重複npm i時,npm會不顧lock的信息,根據package.json中的包Semantic versioning 版本信息下載更新模塊(lock貌似沒啥用了)。**查閱資料得知,自npm 5.0版本發佈以來,npm i的規則發生了三次變化。**1、npm 5.0.x 版本,不管package.json怎麼變,npm i 時都會根據lock文件下載package-lock.json file not updated after package.json file is changed · Issue #16866 · npm/npm這個 issue 控訴了這個問題,明明手動改了package.json,爲啥不給我升級包!然後就導致了5.1.0的問題…2、5.1.0版本後 npm install 會無視lock文件 去下載最新的npm 然後有人提了這個issue why is package-lock being ignored? · Issue #17979 · npm/npm控訴這個問題,最後演變成5.4.2版本後的規則。3、5.4.2版本後 why is package-lock being ignored? · Issue #17979 · npm/npm大致意思是,如果改了package.json,且package.json和lock文件不同,那麼執行npm i時npm會根據package中的版本號以及語義含義去下載最新的包,並更新至lock。如果兩者是同一狀態,那麼執行npm i都會根據lock下載,不會理會package實際包的版本是否有新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章