Kann mir jemand erklären, was es bedeutet --save-dev und wie sich dies auf die Verteilung auswirkt und wie sich NPM dessen bewusst ist, was Sie vorhaben?Wie weiß npm, dass Sie sich im Entwicklungs-/Entwicklungsmodus befinden?
Antwort
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:
- Sie explizit sagen npm es ist die Produktion mit
npm install --production
- 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.
--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.
Was bedeutet es für eine Anwendung, die in der Produktion "läuft", wie weiß npm, dass Sie in Produktion oder Entwicklung laufen? –
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 ". –
- 1. Wie kann man wissen, dass Sie sich im letzten Durchlauf eines For-Loop-Through-Objekts befinden?
- 2. Wo befinden sich Holzstämme?
- 3. Wie können Sie feststellen, ob Sie sich im Haupt-UI-Thread befinden? (In CF)
- 4. Wo sollten sich Standortkonfigurationsdatenrepositorys befinden?
- 5. Wo befinden sich Jenkins Artefakte?
- 6. Wie erhalten Sie Informationen zum Internet-Zertifikat, die sich im Personendokument im Adressbuch befinden?
- 7. Wo befinden sich Minix-Verzeichniseinträge?
- 8. Wo befinden sich die Binärdateien für iOS-Frameworks im Dateisystem?
- 9. Wie laden Sie Bilder nur, wenn sie sich im Ansichtsfenster befinden?
- 10. Matplotlib Achsenbeschriftungen: Wie finde ich heraus, wo sie sich befinden?
- 11. Warum befinden sich CodeIgniter-Anwendungsdateien im Ordner public_html?
- 12. Wo befinden sich vordefinierte TextViews im Android SDK?
- 13. Wo befinden sich die Android-Symbolzeichen im SDK?
- 14. Wo befinden sich die Quellcodes im IDL-Verzeichnis?
- 15. Wie können Sie sicherstellen, dass ein Benutzer weiß, dass er auf Ihrer Website ist?
- 16. Wie erhalte ich, dass meine Warenkorbbenachrichtigung nur angezeigt wird, wenn sich 1 oder mehr Artikel im Warenkorb befinden?
- 17. Wo befinden sich Baugruppen in .NET physisch?
- 18. Wo befinden sich die Auslöser in MVC?
- 19. Wo befinden sich Informationen von dockerfile?
- 20. Wie werden alle Dateien angezeigt, die sich im Arbeitsbereich und nicht im Depot befinden?
- 21. Sollte sich eine Objektsuchmethode im übergeordneten Objekt befinden oder dieselbe wie im Objekt gesucht werden?
- 22. Wie Sie feststellen können, ob Sie sich in einer Rake-Aufgabe befinden oder nicht
- 23. Wo befinden sich die Java-Archivdateistruktur? Spezifikationen?
- 24. Komponententests können nicht ausgeführt werden, wenn sie sich NICHT im Debug-Modus befinden
- 25. Wo befinden sich OpenOffice.org-Vorlagen in Linux?
- 26. Swing-Komponenten, die ihre Größe ändern, wenn sie sich nicht im Fokus der Tastatur befinden
- 27. Wo befinden sich solr.xml, solrconfig.xml und schema.xml?
- 28. Arbeiten Pthread-Mutexe über Threads, wenn sie sich im Shared Memory befinden?
- 29. Wo befinden sich IntelliJ-Scratch-Dateien?
- 30. Alte Commits und neue Commits befinden sich auf separaten Repositories, wie verketten Sie sie?
npm prüft auch die Umgebungsvariable' NODE_ENV' – gargsms