2013-11-20 67 views
16

我有一個package.json與我的所有devDependencies爲什麼`npm prune`從node_modules中刪除文件夾?

我的理解是,如果我刪除依賴關係,並運行npm prune,節點將從node_modules中刪除模塊文件夾。這似乎是維護我的node_modules文件夾的最簡單方法。

docs

NPM修剪

刪除多餘的包

此命令將刪除 「多餘的」 包。

無關程序包是父程序包的依賴項列表中未列出的程序包。

但是,有時甚至在運行後npm prune我仍然有我的node_modules中的模塊文件夾。

爲什麼會發生這種情況,刪除未使用的模塊的正確方法是什麼?

+1

做一個'npm list'。有問題的文件夾是傳遞性依賴項(依賴項的依賴項)? –

回答

9

根據documentation

如果指定了--production標誌,該命令將刪除你的devDependencies指定的 包。

所以,如果你想在這是在devDependencies指定node_modules擺脫模塊文件夾,你應當執行

npm prune --production

+1

我想刪除我的devDependencies中未指定的文件夾。這與你所建議的不同。我希望我的node_modules文件夾只包含寫在我的依賴項中的內容,而不是之前使用的額外模塊。 – elanh

+0

通過說「我的devDependencies中沒有指定」,你的意思是它們是在常規依賴項中指定的,或者它們根本不存在於package.json中? –

+2

我的意思是他們根本不在package.json中。 – elanh

5

運行後:

npm ls 
我看到:
npm ERR! extraneous: [email protected] /path/to/package 

後來,當我做:

npm prune 

包卸載。

相關問題