2013-11-20 15 views
16

Ho un package.json con tutto il mio devDependencies.Perché `npm prune` rimuove le cartelle da node_modules?

La mia comprensione è che se rimuovo una dipendenza ed eseguo npm prune, il nodo rimuoverà la cartella del modulo da node_modules. Questo sembra essere il modo più semplice per mantenere la mia cartella node_modules.

Dal docs:

npm prugna

rimuovere i pacchetti estranei

Questo comando rimuove pacchetti "estranei".

I pacchetti estranei sono pacchetti che non sono elencati nell'elenco delle dipendenze del pacchetto principale.

Tuttavia, a volte anche dopo aver eseguito npm prune ho ancora la cartella del modulo nel mio node_modules.

Perché ciò accade e quale è il modo corretto di rimuovere i moduli non utilizzati?

+1

Fai un 'elenco npm'. La cartella in questione è una dipendenza transitiva (dipendenza di una dipendenza)? –

risposta

9

Secondo documentation

Se non viene specificato il flag --production, questo comando rimuoverà le pacchetti specificati nella vostra devDependencies.

Quindi, se si vuole sbarazzarsi della cartella modulo nel node_modules che è specificato nel devDependencies, si deve eseguire

npm prune --production

+1

Voglio rimuovere le cartelle che NON sono specificate nelle mie devDependencies. Questo è diverso da quello che stai suggerendo. Voglio che la mia cartella node_modules includa solo ciò che è scritto nelle mie dipendenze, non i moduli extra che sono stati usati prima. – elanh

+0

dicendo "NON sono specificati nelle mie devDependencies" intendi che sono specificati nelle dipendenze regolari o non sono presenti in package.json? –

+2

Voglio dire che non sono in package.json affatto. – elanh

5

Dopo l'esecuzione di:

npm ls 

Vedo:

npm ERR! extraneous: [email protected] /path/to/package 

Poi quando ho fatto:

npm prune 

Il pacchetto è stato disinstallato.

Problemi correlati