2016-06-10 13 views

Antwort

1

Zuerst, siehe die Antwort auf diese Frage, What's the difference between dependencies, devDependencies and peerDependencies.

Das wird eine TON erklären.

Zweiter, npm wird devDependencies standardmäßig installieren, es sei denn, eines der beiden Dinge ist wahr, in diesem Fall werden devDependencies übersprungen. Diese Dinge sind:

  1. Sie explizit sagen npm es ist die Produktion mit npm install --production
  2. Sie legen eine Umgebungsvariable, die Kontrollen NPM, NODE_ENVIRONMENT=production

Im Allgemeinen, wenn Sie so etwas wie Heroku verteilen, sie wird das Produktionsflag gesetzt haben und Ihre devDependencies werden nicht installiert werden. Installieren Sie also nur Dinge mit der --save-dev oder -D Flag (beide machen das gleiche), wenn es ein Modul für die Entwicklung ist, wie Tests/Mocks/Scaffolding/etc.

+0

npm prüft auch die Umgebungsvariable' NODE_ENV' – gargsms

1

--save-dev ist nützlich für Abhängigkeiten wie Unit-Test-Bibliotheken. Diese Abhängigkeiten werden von der Anwendung nicht benötigt, um in der Produktion ausgeführt zu werden. Wenn Sie Ihr Paket also veröffentlicht haben, erhalten die Konsumenten Ihres Pakets diese Dev-Abhängigkeiten nicht im Ordner node_modules.

NPM weiß nicht unbedingt, dass Sie sich im Dev-Modus befinden, es ist nur ein Paketmanager, der es Ihnen ermöglicht, Pakete in Ihr Arbeitsverzeichnis zu installieren und Ihr eigenes Paket aus diesem Verzeichnis zu veröffentlichen.

+0

Was bedeutet es für eine Anwendung, die in der Produktion "läuft", wie weiß npm, dass Sie in Produktion oder Entwicklung laufen? –

+0

Matthew Bakaitis Antwort gab eine gute Beschreibung, wie npm weiß Dev-Abhängigkeiten nicht zu installieren. Entweder installieren Sie mit dem Produktionsflag '--production' oder Sie setzen die Umgebungsvariable NODE_ENVIRONMENT auf" production ". –

Verwandte Themen