NPM vs. Bower vs. Browserify vs. Gulp vs. Grunt vs. Webpack

Ich versuche, mein Wissen über die beliebtesten JavaScript-Paketmanager, -Bündler und -Aufgabenläufer zusammenzufassen. Bitte korrigiere mich wenn ich falsch liege

npm & bower sind Paketmanager. Sie laden nur die Abhängigkeiten herunter und wissen nicht, wie sie Projekte selbst erstellen sollen. Was sie wissen, ist @ zu nennwebpack/gulp/grunt nachdem alle Abhängigkeiten abgerufen wurden.bower ist wienpm, baut aber abgeflachte Abhängigkeitsbäume auf (im Gegensatz zunpm was es rekursiv machen). Bedeutungnpm ruft die Abhängigkeiten für jede Abhängigkeit ab (kann sie einige Male abrufen), währendbower erwartet, dass Sie Unterabhängigkeiten manuell einbeziehen. Manchmalbower undnpm werden zusammen für Front-End und Back-End verwendet (da jedes Megabyte im Front-End von Bedeutung sein kann).grunt undgulp sind Task-Läufer, die alles automatisieren, was automatisiert werden kann (d. h. CSS / Sass kompilieren, Bilder optimieren, ein Bündel bilden und es minimieren / transpilieren).grunt vs.gulp (ist wiemaven vs.gradle oder Konfiguration vs. Code). Grunt basiert auf der Konfiguration separater unabhängiger Aufgaben. Jede Aufgabe öffnet / handhabt / schließt eine Datei. Gulp benötigt weniger Code und basiert auf Node-Streams. Dadurch kann es Pipe-Ketten erstellen (ohne die gleiche Datei erneut zu öffnen) und beschleunigen.webpack (webpack-dev-server) - für mich ist es ein Task-Runner mit heißem Neuladen von Änderungen, mit dem Sie alle JS / CSS-Beobachter vergessen können.npm/bower + Plugins können Task-Läufer ersetzen. Ihre Fähigkeiten überschneiden sich häufig, sodass es unterschiedliche Auswirkungen gibt, wenn Sie @ verwenden müssegulp/grunt Übernpm + Plugins. Aber Task-Läufer sind definitiv besser für komplexe Aufgaben geeignet (z. B. "Bei jedem Build Bundle erstellen, von ES6 auf ES5 transpilieren, auf allen Browser-Emulatoren ausführen, Screenshots erstellen und auf Dropbox über FTP bereitstellen").browserify ermöglicht das Packen von Knotenmodulen für Browser.browserify vsnode 'srequire ist eigentlichAMD vs CommonJS.

Fragen

Was istwebpack & webpack-dev-server? Offizielle Dokumentation sagt, es ist ein Modulbündler, aber für mich ist es nur ein Task Runner.Was ist der UnterschiedWo würdest du @ verwendbrowserify? Können wir nicht dasselbe mit Node / ES6-Importen machen?Wann würdest du @ verwendgulp/grunt Übernpm + Plugins?Bitte geben Sie Beispiele an, wenn Sie eine Kombination verwenden müssen

Antworten auf die Frage(16)

Ihre Antwort auf die Frage