Was machen die --save-Flags mit der npm-Installation?

93

Ich sehe Anweisungen zum Installieren eines Pakets mit beiden

npm install <package_name>

oder

npm install <package_name> --save

oder

npm install <package_name> --save-dev

Was ist der Unterschied zwischen diesen Optionen?

Obromios
quelle

Antworten:

75

npm install <package_name> --saveInstalliert das Paket und aktualisiert die Abhängigkeiten in Ihrer package.json. Da diese Frage gestellt wurde, wurde npm geändert --save, sodass dies die Standardoption ist, sodass Sie --savedie Abhängigkeiten nicht aktualisieren müssen.

npm install <package_name> --no_save Installiert das Paket, aktualisiert jedoch nicht die in Ihrer package.json aufgeführten Abhängigkeiten.

npm install <package_name> ---save-devaktualisiert das devDependenciesin Ihrem Paket. Diese werden nur für lokale Tests und Entwicklungen verwendet.

Weitere Informationen finden Sie unter https://docs.npmjs.com/getting-started/using-a-package.json .

Obromios
quelle
3
Dies war die beste Antwort für meine Google-Suche auf "npm --save flag". Bitte erwägen Sie, es mit den richtigen Informationen zu aktualisieren, dh dass --save jetzt die Standardeinstellung ist und --no-save erforderlich ist, um die Liste der Abhängigkeiten in package.json nicht zu aktualisieren.
Jonas Rosenqvist
50

Für die npm-Installation sind 3 exklusive, optionale Flags erforderlich, mit denen die Paketversion in Ihrem Hauptpaket gespeichert oder aktualisiert wird.

-S, --save: Paket wird in Ihren Abhängigkeiten angezeigt.

-D, --save-dev: Das Paket wird in Ihren devDependencies angezeigt.

-O, --save-optional: Das Paket wird in Ihren optionalen Abhängigkeiten angezeigt.

Wenn Sie eine der oben genannten Optionen verwenden, um Abhängigkeiten in Ihrer package.json zu speichern, gibt es ein zusätzliches optionales Flag:

-E, --save-exact: Gespeicherte Abhängigkeiten werden mit einer genauen Version konfiguriert, anstatt den Standard-Semverbereichsoperator von npm zu verwenden. Wenn Sie eine npm-shrinkwrap.json haben, wird diese ebenfalls aktualisiert.

<scope>es ist optional. Das Paket wird aus der Registrierung heruntergeladen, die dem angegebenen Bereich zugeordnet ist. Wenn dem angegebenen Bereich keine Registrierung zugeordnet ist, wird die Standardregistrierung angenommen. Siehe npm-scope.

Hinweis: Wenn Sie das @ -Symbol nicht in Ihren Bereichsnamen aufnehmen, interpretiert npm dies stattdessen als GitHub-Repository (siehe unten). Auf Bereichsnamen muss auch ein Schrägstrich folgen.

Beispiele:

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

Hinweis: Wenn eine Datei oder ein Ordner mit dem Namen vorhanden ist <name> im aktuellen Arbeitsverzeichnis , wird versucht, diese zu installieren, und es wird nur versucht, das Paket nach Namen abzurufen, wenn es nicht gültig ist.

(aus offiziellen Dokumenten) https://docs.npmjs.com/cli/install

Orange WebDev
quelle
50
Die --saveOption scheint zwar weiterhin zu funktionieren, ist jedoch nicht mehr erforderlich. Die Pakete werden jetzt standardmäßig in Abhängigkeiten gespeichert . Die Logik ist jetzt umgekehrt - wenn Sie Ihr Paket nicht speichern möchten, müssen Sie angeben--no-save
Coruscate5
Danke, @ Coruscate5 hat meine Frage genau beantwortet.
Kon
25

Das --save Flagge erfüllt keinen Zweck mehr.

Wie in den anderen Antworten bereits erwähnt, hat das --saveFlag zuvor die Abhängigkeiten in der Projektdatei aktualisiert package.json, jedochnpm install enthält jetzt standardmäßig diese Funktionalität.

Wenn Sie verhindern möchten, dass npm installAbhängigkeiten gespeichert werden, müssen Sie an dieser Stelle das --no-saveFlag verwenden.

Vielen Dank an Coruscate5 für die Erwähnung in ihrem Kommentar .

Weitere Informationen in der Dokumentation zur npm-Installation :

Bei der npm-Installation werden alle angegebenen Pakete standardmäßig in Abhängigkeiten gespeichert. Darüber hinaus können Sie mit einigen zusätzlichen Flags steuern, wo und wie sie gespeichert werden:

-P, --save-prod: Das Paket wird in Ihren Abhängigkeiten angezeigt. Dies ist die Standardeinstellung, sofern nicht -D oder -O vorhanden sind.

-D, --save-dev: Das Paket wird in Ihren devDependencies angezeigt.

-O, --save-optional: Das Paket wird in Ihren optionalen Abhängigkeiten angezeigt.

--no-save: Verhindert das Speichern in Abhängigkeiten.

Wenn Sie eine der oben genannten Optionen verwenden, um Abhängigkeiten in Ihrer package.json zu speichern, gibt es zwei zusätzliche optionale Flags:

-E, --save-genaue: Gespeicherte Abhängigkeiten werden mit einer exakten Version konfiguriert, anstatt den Standard-Semverbereichsoperator von npm zu verwenden.

-B, --save-bundle: Gespeicherte Abhängigkeiten werden ebenfalls zu Ihrer bundleDependencies-Liste hinzugefügt.

2xj
quelle
Vielen
Es klärte meinen langjährigen Zweifel. Vielen Dank
Alok Ranjan