Was bedeutet -save-dev in npm install grunt --save-dev

277

Ich habe gerade angefangen, Grunt.js zu verwenden . Es ist ziemlich schwer einzurichten und ich bin gerade dabei, eine package.jsonDatei zu erstellen.

Nach diesem Tutorial gibt es drei Möglichkeiten, eine package.jsonDatei zu erstellen .

Das erste ist zu tun npm install grunt --save-dev

Aber was heißt --save-devdas? Ich habe versucht zu suchen, aber es endet vergebens.

Vennsoh
quelle
Ich glaube, ich finde einige Antworten. gruntjs.com/getting-started - npmjs.org/doc/json.html#devDependencies
Vennsoh
Tutorial Link gebrochen
SteveC

Antworten:

317

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

Laut den npm Installationsdokumenten .

Wenn jemand vorhat, Ihr Modul in seinem Programm herunterzuladen und zu verwenden, möchte oder muss er das von Ihnen verwendete externe Test- oder Dokumentationsframework wahrscheinlich nicht herunterladen und erstellen.

Mit anderen Worten, wenn Sie ausführen npm install, werden die devDependencies Ihres Projekts installiert, aber die devDependencies für alle Pakete, von denen Ihre App abhängt, werden nicht installiert. Darüber hinaus müssen andere Apps, die Ihre App als Abhängigkeit haben, Ihre devDependencies nicht installieren. Solche Module sollten nur bei der Entwicklung der App benötigt werden (zB Grunzen, Mokka usw.).

Laut package.json docs

Bearbeiten: Versuch zu visualisieren, was npm installtut:

  • dein Projekt
    • Abhängigkeit installiert
      • Abhängigkeit installiert
        • Abhängigkeit installiert
        • devDependency NICHT installiert
      • devDependency NICHT installiert
    • devDependency installiert
      • Abhängigkeit installiert
      • devDependency NICHT installiert
Andreas Hultgren
quelle
2
Standardmäßig wird es nicht mit Dev-Abhängigkeiten installiert, aber wie installiere ich dann? npm install --devFlagge?
StanleyZheng
4
@stanzheng Ich bin nicht sicher, was Sie wissen müssen. Wenn Sie sich in einem Projekt befinden und ausführen npm install, werden auch die devDependencies des Projekts installiert. Sie möchten nicht, dass die devDependencies einer Abhängigkeit installiert werden. Wenn Sie ein npm-Paket entwickeln möchten, müssen Sie git clone xxxdieses Projekt ausführen npm install.
Andreas Hultgren
3
"devDependencies für die Abhängigkeiten Ihrer App werden nicht installiert, wenn Sie npm install ausführen" ist falsch. Wenn ich eine package.json habe und sie nur "devDependencies" mit meinen npm-Paketen enthält und ich dann "npm install" eingebe, werden diese "devDependecies" installiert.
Kern
6
Ich habe versucht zu verstehen und ich habe es nicht getan. Dann habe ich versucht, die Visualisierung zu verstehen und habe es nicht getan. Was bedeutet jeder Punkt mit Aufzählungszeichen? Ein Ordner? Was bedeutet der durchgestrichene Gegenstand? Ein nicht existierendes Verzeichnis? Wenn das stimmt, wie können Sie erschöpfende nicht existierende Dinge auflisten?
Rafael Eyng
8
Wenn npm installin Ihrem Projekt ausgeführt wird, werden alle devDependencies in package.json installiert. Wenn Sie Ihr Projekt jedoch als neues npm-Paket verpacken und veröffentlichen, werden die devDependencies nicht ausgeführt, wenn jemand anderes Ihr Paket mit npm install installiert auf ihrem System installiert. Ist das richtig? @stanzheng oder Sie können npm install --production ausführen, um alles in package.json außer den dev-Abhängigkeiten zu installieren
rwilson04
99

Es gibt (mindestens) zwei Arten von Paketabhängigkeiten, die Sie in Ihren package.json-Dateien angeben können:

  1. Die Pakete, die zur Verwendung Ihres Moduls erforderlich sind, werden unter der Eigenschaft "Abhängigkeiten" aufgelistet. Mit npm können Sie diese Abhängigkeiten folgendermaßen zu Ihrer package.json-Datei hinzufügen:

    npm install --save packageName
  2. Die zur Entwicklung Ihres Moduls erforderlichen Pakete sind unter der Eigenschaft "devDependencies" aufgeführt. Diese Pakete sind nicht erforderlich, damit andere das Modul verwenden können. Wenn sie jedoch bei der Entwicklung des Moduls helfen möchten, werden diese Pakete benötigt. Mit npm können Sie diese devDependencies wie folgt zu Ihrer package.json-Datei hinzufügen:

    npm install --save-dev packageName
Lonnie Best
quelle
35

Um die Antwort von Andreas zu ergänzen, können Sie nur die Abhängigkeiten installieren, indem Sie Folgendes verwenden:

npm install --production
Maschinenkopf115
quelle
7

Dokumentation von npm für npm install <package-name> --saveund npm install <package-name> --save-devfinden Sie hier:

https://docs.npmjs.com/getting-started/using-a-package.json#the-save-and-save-dev-install-flags

Eine package.jsonDatei deklariert Metadaten zu dem Modul, das Sie entwickeln. Beide oben genannten Befehle ändern diese package.jsonDatei. --savedeklariert das installierte Paket (in diesem Fall grunt) als Abhängigkeit für Ihr Modul; --save-devdeklariert es als Abhängigkeit für die Entwicklung Ihres Moduls.

Fragen Sie sich: Wird das installierte Paket für die Verwendung meines Moduls benötigt oder wird es nur für die Entwicklung benötigt?

Niko Kovacevic
quelle
6

Wenn Sie den Parameter "--save" verwenden, wird Ihre Abhängigkeit in die Nummer 1 unten in package.json verschoben. Wenn Sie den Parameter "--save-dev" verwenden, wird Ihre Abhängigkeit in die Nummer 2 unten in package.json verschoben.

# 1. "Abhängigkeiten": Diese Pakete werden von Ihrer Anwendung in der Produktion benötigt.

# 2. "devDependencies": Diese Pakete werden nur zum Entwickeln und Testen benötigt

Sathesh
quelle
5

Für mich erscheint die erste Antwort etwas verwirrend, um es kurz und sauber zu machen:

npm install <package_name>speichert alle angegebenen Pakete standardmäßig in Abhängigkeiten . Darüber hinaus können Sie mit einigen zusätzlichen Flags steuern, wo und wie sie gespeichert werden:

npm install <package_name> --no-save Verhindert das Speichern in Abhängigkeiten.

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

Sie können mehr in der DCU lesen

AnnaKlein
quelle