2016-04-05 18 views
7

Wenn Sie irgendetwas über npm installieren, werden Dutzende von nicht benötigten Dateien heruntergeladen. Normalerweise suche ich nach einem finalen Build der Bibliothek, einer *.min.js Datei oder ähnlichem, aber der Rest ist nutzlos.npm Overhead - wie geht das?

Wie gehen Sie mit all diesen nutzlosen Dateien um? Entfernen Sie sie per Hand oder generieren Sie die endgültige App mit einem beliebigen Build-Tool wie gulp oder grunt?

Ich bin ziemlich verwirrt, da ich viele npm-Module in meiner Webapp installiert habe und die Ordnergröße etwa 50 Megabyte beträgt, aber es könnte nur 2 MB sein.

+0

Ich würde sagen, Sie sind besser dran mit Schluck, wenn Sie npm verwenden, um Zeug zu installieren. Auf diese Weise sollte dein endgültiger Build nur das haben, was er braucht. – Toby

+0

Das Problem ist nicht npm. Es sind Bibliotheksentwickler, die Tonnen von unnötigem Müll in ihren Builds enthalten, manchmal wegen des schlechten Verständnisses, wie npm funktioniert. Wenn Sie eine dieser Bibliotheken verwenden, müssen Sie auch alle Abhängigkeiten herunterladen. –

+0

@ GOTO0, das ist schlecht. Lodash zum Beispiel hat 564 Dateien in einem Ordner – Tukkan

Antwort

1

Verwalten von Paketen

für Front-End Nicht-Entwicklungspakete I Bower bevorzugen. Es verwaltet die minimierte und nicht-minimierte Version Ihrer Pakete.

Werkzeug bauen

Verwenden Sie entweder Gulp oder Grunt. Schluck würde mein Werkzeug der Wahl sein.

Gulp Aufgabe, die Ihr Code erheblich verbessern wird, sind:

  • minification sowohl css und js
  • Optimierung/Kompression von Bildern
  • Verkettung und Caching die Anzahl der Anrufe an den Server zu reduzieren
  • Paket Versionierung
  • automatische Injektion von Projektabhängigkeiten
  • automatische Injektion von externen Abhängigkeiten
  • statische Analyse von js und css
  • automatische baut auf Code
  • Einsatz
  • Test

Knoten

Wenn Sie ändert, lassen Sie alle zum Knoten Ihre Entwicklungstools und lassen Sie alle Ihre Release-Plugins frei. Die meisten Knotenpakete, die in freigegebenen Apps verwendet werden, haben ein Gegenstück zur Bower-Installation.

bearbeiten


löschen Sie nichts von Knoten manuell, wie Sie wissen nicht, welche Pakete andere Pakete als Abhängigkeiten. Wenn Sie befürchten, dass sich darin Müll befindet, verwenden Sie npm rimraf, um den Ordner node_modules zu löschen, und führen Sie anschließend npm install aus. Überprüfen Sie vor allem Ihre package.json auf unnötige gespeicherte Pakete.

+0

Ich bleibe bei meinem Beispiel mit lodash - bower installiert Hunderte von Dateien auch, die gleichen wie Npm, aber mit anderen Fiel Struktur. – Tukkan

+1

@Tukkan, Sie müssen sich keine Gedanken über die Anzahl der Dateien machen, die Sie in Ihrer Entwicklungsumgebung haben. Du benutzt Gulp oder Grunt oder? Dann benutze wirdedep und inject, um deine Abhängigkeiten automatisch zu verwalten –

3

npm install --production

einfach eine npm tun installieren bringt in beiden Entwicklungs- und Laufzeitabhängigkeiten.Sie können ENV auch global für den Server festlegen: npm config set production.

Siehe this Github-Ausgabe. Beachten Sie, dass dies Sie nicht nur die endgültige minimierte Build von allem bekommen, aber wird die Aufblähung stark reduzieren. Zum Beispiel könnte eine Bibliothek darauf bauen, dass babel-cli, babel-preset-es2015 und uglifyjs erstellt werden (devDependency), aber Sie brauchen nichts davon, wenn sie auch die transpilierte minimierte Datei enthält.