Cosa fanno i flag --save con npm install


102

Vedo le istruzioni per installare un pacchetto con entrambi

npm install <package_name>

o

npm install <package_name> --save

o

npm install <package_name> --save-dev

Qual è la differenza tra queste opzioni?

Risposte:


88

npm install <package_name> --saveinstalla il pacchetto e aggiorna le dipendenze nel tuo package.json. Poiché è stata posta questa domanda, è stata apportata una modifica a npm, tale che --saveè diventata l'opzione predefinita, quindi non è necessario utilizzare --saveper aggiornare le dipendenze.

npm install <package_name> --no_save installa il pacchetto ma non aggiorna le dipendenze elencate in package.json.

npm install <package_name> ---save-devaggiorna il devDependenciesnel tuo pacchetto. Questi sono usati solo per test e sviluppo locali.

Puoi leggere di più su https://docs.npmjs.com/getting-started/using-a-package.json .


3
Questa è stata la risposta migliore per la mia ricerca su Google su "npm --save flag". Si prega di considerare di aggiornarlo con le informazioni corrette, cioè che --save è ora l'impostazione predefinita e --no-save è richiesto per non aggiornare l'elenco delle dipendenze in package.json
Jonas Rosenqvist

52

L'installazione di npm richiede 3 flag esclusivi e opzionali che salvano o aggiornano la versione del pacchetto nel pacchetto principale.json:

-S, --save: Il pacchetto apparirà nelle tue dipendenze.

-D, --save-dev: Il pacchetto apparirà nelle tue devDependencies.

-O, --save-optional: Il pacchetto apparirà nelle tue dipendenze opzionali.

Quando si utilizza una delle opzioni precedenti per salvare le dipendenze nel proprio package.json, è presente un flag aggiuntivo opzionale:

-E, --save-exact: Le dipendenze salvate verranno configurate con una versione esatta anziché utilizzando l'operatore di intervallo semver predefinito di npm. Inoltre, se hai un file npm-shrinkwrap.json, anche questo verrà aggiornato.

<scope>è opzionale. Il pacchetto verrà scaricato dal registro associato all'ambito specificato. Se nessun registro è associato all'ambito specificato, viene utilizzato il registro predefinito. Vedi npm-scope.

Nota: se non includi il simbolo @ nel nome dell'ambito, npm lo interpreterà invece come un repository GitHub, vedi sotto. Anche i nomi degli ambiti devono essere seguiti da una barra.

Esempi:

npm install sax --save
npm install githubname/reponame
npm install @myorg/privatepackage
npm install node-tap --save-dev
npm install dtrace-provider --save-optional
npm install readable-stream --save --save-exact

Nota: se è presente un file o una cartella denominati <name>nella directory di lavoro corrente, tenterà di installarli e tenterà di recuperare il pacchetto per nome solo se non è valido.

(da documenti ufficiali) https://docs.npmjs.com/cli/install


52
Sebbene l' --saveopzione sembri ancora funzionare, non è più necessaria: i pacchetti vengono ora salvati nelle dipendenze per impostazione predefinita . La logica ora è invertita - se non vuoi salvare il tuo pacchetto, devi specificare--no-save
Coruscate5

Grazie, @ Coruscate5 ha risposto esattamente alla mia domanda.
Kon

28

La --savebandiera non ha più uno scopo.

In precedenza, come notato nelle altre risposte, il --saveflag aggiornava le dipendenze nel package.jsonfile del progetto , ma npm installora include questa funzionalità per impostazione predefinita.

A questo punto se vuoi impedire il npm installsalvataggio delle dipendenze, devi usare il --no-saveflag.

Grazie a Coruscate5 per averlo menzionato nel loro commento .

Maggiori informazioni nella documentazione di installazione di npm :

npm install salva tutti i pacchetti specificati nelle dipendenze per impostazione predefinita. Inoltre, puoi controllare dove e come vengono salvati con alcuni flag aggiuntivi:

-P, --save-prod: il pacchetto apparirà nelle tue dipendenze. Questa è l'impostazione predefinita a meno che non siano presenti -D o -O.

-D, --save-dev: il pacchetto apparirà nelle tue devDependencies.

-O, --save-optional: il pacchetto apparirà nelle tue dipendenze opzionali.

--no-save: impedisce il salvataggio nelle dipendenze.

Quando si utilizza una delle opzioni precedenti per salvare le dipendenze nel proprio package.json, ci sono due flag aggiuntivi opzionali:

-E, --save-exact: le dipendenze salvate verranno configurate con una versione esatta invece di usare l'operatore di intervallo semver predefinito di npm.

-B, --save-bundle: anche le dipendenze salvate verranno aggiunte all'elenco bundleDependencies.


grazie per la risposta aggiornata per coprire la situazione attuale
DrCord

Ha chiarito il mio dubbio di vecchia data. Grazie
Alok Ranjan
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.