2016-09-19 18 views
1

如果我更新NPM工作流應用程序中的package.json文件,現有用戶運行哪個命令來更新其本地node_modules依賴關係?如果package.json文件已更新,用戶應運行哪些NPM命令?

開始使用它,他們跑:

$ npm install 

那麼他們怎麼運行,如果有變化的文件的package.json?或者他們只是刪除該文件夾並重新運行npm install命令?

回答

3

要重新驗證的package.json和安裝調整的版本或新軟件包:

$ npm install 

的一件事這個不會做的是去除不在包的包。 JSON。爲了做到這一點,運行:

$ npm prune 

如果你只改變了包的版本,並沒有添加新的軟件包:

$ npm update 

如果你已經更新了特定包版本:

$ npm update {packagename} 
+0

嘿布蘭登,謝謝!我將把它放在文檔中。 –

+0

如果用戶不想檢查'package.json'的歷史記錄來查看是否添加或刪除了某些內容,只想運行一個命令來獲取'node_modules'以匹配'package.json'? – binki

+0

爲什麼要關心package.json的歷史記錄是否被檢查?這可以完成工作並同步下載的軟件包以匹配package.json。 – brandonscript

0

您應該做

npm install && npm prune 

npm upgrade && npm prune 

npm install將快於npm upgrade,因爲它只在node_modules更新包,如果package.json需要一個較新的版本。另一方面,npm uprade將會下載依賴關係的更新(如果可用),其中可能包括錯誤修復。對於≥npm-5,您應該使用npm install,因爲npm upgrade將具有修改任何package-lock.json文件的副作用,除非您是軟件包的維護者,否則不應修改該文件。

npm prune是必要的,因爲package.json的更新可能已經刪除了依賴關係。如果您未運行npm prune,則以前版本的package.json安裝的軟件包將保留在node_modules目錄中,如果您剛剛下載/克隆該項目並運行npm install,該目錄將不在該目錄中。由於某些軟件包有條件地調用require()或甚至掃描node_modules目錄,因此從package.json中刪除的軟件包可能會導致意外的行爲。

相關問題