如果我更新NPM工作流應用程序中的package.json文件,現有用戶運行哪個命令來更新其本地node_modules依賴關係?如果package.json文件已更新,用戶應運行哪些NPM命令?
開始使用它,他們跑:
$ npm install
那麼他們怎麼運行,如果有變化的文件的package.json?或者他們只是刪除該文件夾並重新運行npm install
命令?
如果我更新NPM工作流應用程序中的package.json文件,現有用戶運行哪個命令來更新其本地node_modules依賴關係?如果package.json文件已更新,用戶應運行哪些NPM命令?
開始使用它,他們跑:
$ npm install
那麼他們怎麼運行,如果有變化的文件的package.json?或者他們只是刪除該文件夾並重新運行npm install
命令?
要重新驗證的package.json和安裝調整的版本或新軟件包:
$ npm install
的一件事這個不會做的是去除不在包的包。 JSON。爲了做到這一點,運行:
$ npm prune
如果你只改變了包的版本,並沒有添加新的軟件包:
$ npm update
如果你已經更新了特定包版本:
$ npm update {packagename}
您應該做
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
中刪除的軟件包可能會導致意外的行爲。
嘿布蘭登,謝謝!我將把它放在文檔中。 –
如果用戶不想檢查'package.json'的歷史記錄來查看是否添加或刪除了某些內容,只想運行一個命令來獲取'node_modules'以匹配'package.json'? – binki
爲什麼要關心package.json的歷史記錄是否被檢查?這可以完成工作並同步下載的軟件包以匹配package.json。 – brandonscript