Rimuovi automaticamente le dipendenze da package.json quando si utilizza la disinstallazione di npm


84

Dopo npm initche posso aggiungere dipendenze nel mio package.json usando questo:

npm install package --save

E dì, voglio uninstallil pacchetto e lo faccio facendo:

npm uninstall package

ma voglio che anche il mio package.json venga aggiornato di conseguenza senza che io debba andare manualmente al file ed eliminare quella riga.

Dai documenti di npm si dice:

È strettamente additivo, quindi non elimina le opzioni dal tuo package.json senza una buona ragione per farlo.

Quindi, volevo solo sapere se questo è anche possibile.


Poiché le mie dipendenze vengono aggiunte automaticamente su package.json ogni volta che installo con il flag (--save), mi chiedevo se esiste un modo per rimuovere le dipendenze da package.json ogni volta che disinstallo anche il pacchetto.
urlo il

Risposte:


151

Usa la stessa --savebandiera. Se hai installato una dipendenza con:

$> npm install grunt-cli --save

puoi disinstallarlo, aggiornando package.json, usando:

$> npm uninstall grunt-cli --save

Il flag 'save' dice a npm di aggiornare package.json in base all'operazione che hai appena fatto.


3
Sto usando npm con ember-cli e ho dovuto usare al --save-devposto di --save.
gerry3

4
se lo hai installato con --save-dev, anche la disinstallazione è --save-dev, poiché --save salva nella dependenciessezione del file package.json, mentre --save-dev salverà nella devDependenciessezione
Mike ' Pomax 'Kamermans

7
Sono andato lontano da quando ho postato questa domanda ed ecco un piccolo suggerimento. Puoi usare npm i <package_name> -Sper aggiungere alla tua dependencieslista o npm i <package_name> -Dper aggiungere al tuo dev-dependencies. Lo stesso flag si applica per la rimozione con npm rm <package_name> -Sonpm rm <package_name> -D
urlo

1
ma nota che questi sono semplicemente gli equivalenti stenografici di --save e --save-dev. Vedi npm helpper tutte le bandiere e le loro equivalenti abbreviazioni. (tutto ciò che è installato con -S o --save e può essere disinstallato anche usando entrambi, npm non li vede come diversi. Solo "meno battitura" per -S)
Mike 'Pomax' Kamermans

1
Sei un santo tra gli uomini.
John Von Neumann

0

Nel mio caso --save non ha cancellato la voce da package.json, il comando come suggerito da ionic-check Penso che se la disinstallazione dovesse uscire con qualche errore package.json non verrà aggiornato nel qual caso hai solo un'opzione per modificare manualmente package.json, questo è noioso, ma credo sia l'unico modo

AGGIORNARE

quando si disinstalla un pacchetto che ha una dipendenza da un altro pacchetto attivo, in tal caso la disinstallazione potrebbe non riuscire con errori / avvisi, il metodo sicuro è attraverso il seguente grafico delle dipendenze non sicuro che ci sia uno strumento disponibile, uno strumento utile in tali operazioni, avviso i messaggi sono abbastanza fuorvianti anche se "devi installare le dipendenze peer .." non ha alcun senso quando stiamo disinstallando un pacchetto


1
Questo non dovrebbe essere necessario: se è nella dependencieslista uninstall --save dovrebbe rimuoverlo, indipendentemente dal fatto che da esso dipenda qualcos'altro. NPM utilizza l'appiattimento delle dipendenze piuttosto intelligente, quindi se hai X nell'elenco delle dipendenze (esplicitamente) e disinstalli X --save, verrà rimosso. Tuttavia, ricordate che ci sono più liste di dipendenza, e --savenon è la stessa come --save-dev, --save-prodo --save-optional. Inoltre sì: se il tuo uninstallporta a errori, NPM si ferma a quell'errore. Non cerca di continuare perché non può più garantire la correttezza.
Mike 'Pomax' Kamermans
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.