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.