Die Schlacht um Build-Skripte Gulp gegen Grunt
Ich habe bereits geschrieben, wie man mit Gulp anfängt und wie man mit Grunt anfängt. Sie beide Automatisieren Sie unsere Aufgaben, Sie beide Node verwenden, und beide verlangen von dir Erstellen Sie Aufgaben und installieren Sie Plugins von einer Art. Aber wundern Sie sich über den Unterschied zwischen den beiden oder sogar den besseren?
In diesem Artikel konzentriere ich mich hauptsächlich auf die Unterschiede zwischen diesen beiden Projekten Dies kann dazu beitragen, dass Sie entscheiden, welche der beiden Sie für sich selbst für besser hält. Ich werde einen Code verwenden, der möglicherweise nicht vertraut ist. Wenn dies der Fall ist, schlage ich vor, die zwei zuvor veröffentlichten Artikel durchzulesen.
Mehr auf Hongkiat.com
- Wie fange ich mit Gulp an?
- Wie fange ich mit Grunt an?
Geschwindigkeit
Der Hauptunterschied zwischen Gulp und Grunt liegt in wie sie mit ihren Automatisierungsaufgaben im Inneren umgehen. Gulp verwendet Node-Streams, während Grunt temporäre Dateien verwendet. Lassen Sie uns das einfach ins Englische stellen, sollen wir?
Angenommen, Sie möchten SASS-Code für Ihr Projekt schreiben. Sie möchten Ihren SASS-Code kompilieren und dann möglicherweise verkleinern.
Grunt behandelt dies mit intermediäre Dateien Dies sind Festplatten-E / A-Vorgänge. Ihre SASS-Datei wird kompiliert und dann in eine temporäre Datei geschrieben. Die temporäre Datei wird vom Autoprefixer verwendet und das Endprodukt wird in die Zieldatei geschrieben.
Gulp kümmert sich um all das in Erinnerung. Ihre SASS-Quelldatei wird kompiliert, das Ergebnis wird an den Autoprefixer übergeben, ohne in eine Datei geschrieben zu werden. Anschließend wird die Zieldatei geschrieben.
Im Vergleich zu speicherinternen Vorgängen ist das Schreiben von Festplatten langsam, was dies bedeutet Gulp hat einen großen Geschwindigkeitsvorteil (zur Zeit). Ein Geschwindigkeitsvergleich wurde von tech.tmw durchgeführt, der zeigt, dass die meisten Aufgaben auf Gulp mindestens doppelt so schnell sind. Während dies keine große wissenschaftliche Studie war, ist die Tendenz da und ich habe das gleiche mit meinen eigenen Projekten gesehen. Aber wie groß ist der Unterschied in der Geschwindigkeit?
Unterschied in Sekunden
Für die meisten Projekte ist das egal. Die meisten Projekte sind klein. Wenn Sie ein WordPress-Theme oder ähnliches erstellen, liegt die Anzahl der Dateien, mit denen Sie arbeiten müssen, in einem vernünftigen Rahmen. Es ist wirklich egal, ob Ihre Stylesheets in 400ms oder 800ms kompiliert sind.
Darüber hinaus können die meisten Projekte sein so strukturiert, dass einige der intensivsten Probleme umgangen werden können. Wenn Sie über 50 SASS-Dateien verfügen, können Sie diese während der Entwicklung genauso schnell verketten. Sie müssen nicht automatisch korrigiert oder verkleinert werden. Sie müssen die Bilder nicht bei jedem Speichern eines Projekts usw. optimieren.
Selbst wenn Sie wirklich die großen Waffen brauchen, weil Sie Ihre Arbeit auf einen Staging-Server verschieben oder wenn Sie ein Repository aktualisieren, kann eine Build-Zeit von 5 Sekunden oder 9 Sekunden einen großen Unterschied ausmachen?
Um das Ganze abzurunden, wird Grunt in der kommenden 0.5-Version Unterstützung für Piping hinzufügen, was die Sache erheblich beschleunigen wird und dies zu einem Moot-Punkt macht.
Die Gemeinde
Grunt ist schon viel länger als Gulp, also hat es eine bedeutende Benutzerbasis. Grunt erhält derzeit im Durchschnitt etwa 37.000 Downloads pro Tag, Gulp ist etwas mehr als die Hälfte davon, nahe der 23.000-Marke. Allerdings gibt es Gulp erst seit anderthalb Jahren, was diese Zahl zumindest respektabel macht.
Grunt hat derzeit über 4000 Plugins, während Gulp über 1200 Plugins hat. Laut Google-Trends suchen immer mehr Menschen nach Grunt-relevanten Dingen, es gibt mehr Foren, die sich damit befassen, und generell mehr Community-Unterstützung.
Natürlich ist Gulp im Kommen, was bedeutet, dass es so ist wahrscheinlich auf lange Sicht ausgeglichen. Dies ist jedoch ein Hindernis für einige Entwickler, insbesondere für diejenigen, die Grunt-basierte Projekte bearbeiten.
Ich möchte darauf hinweisen, dass die Gemeinschaften für beide sind sehr nett. Soweit ich das beurteilen kann, ist die Beziehung zwischen den Führern in jeder Gemeinschaft erstaunlich und sollte allen als Beispiel dienen. Der Entwickler von Gulp hat dem Verfasser des Geschwindigkeitstestvergleichs tatsächlich dabei geholfen, die Timing-Genauigkeiten zu verbessern, was zu einer Verringerung der Zeitunterschiede führt. Das nenne ich einen Gentleman!
Code Vs Konfiguration
Anscheinend ist dies für viele der Wendepunkt, aber um ehrlich zu sein, kann ich das Thema hier nicht persönlich sehen.
Das Argument lautet wie folgt: Gulp ist ein gutes Beispiel dafür Code über Konfiguration kann eine gute Sache sein, wenn die Konfiguration etwas verwirrend wird. Andere Leute sagen, dass dies wahr ist und Gulp einfacher ist lesen, es ist schwieriger zu schreiben da Piping kann etwas verwirrend sein.
Bevor ich mich einmische, hier das gleiche Beispiel zuerst in Grunt, dann in Gulp:
grunt.initConfig (sass: dist: files: [src: 'dev / *. scss'), dest: '.tmp / styles', expand: true, ext: '.css', Autoprefixer : dist: files: [expand: true, cwd: '.tmp / styles', src: ', * / *. css', dest: 'css / styles'], watch: styles: files: ['dev / *. scss'], Aufgaben: ['sass: dist', 'autoprefixer: dist']); grunt.registerTask ('default', ['styles', 'watch']);
gulp.task ('sass', function () gulp.src ('dev / *. scss') .pipe (sass ()) .pipe (autoprefixer ()) .pipe (gulp.dest ('css / styles') ));); gulp.task ('default', function () gulp.run ('sass'); gulp.watch ('dev / *. scss', function () gulp.run ('sass');); );
Meiner Meinung nach ist es wirklich egal. Sicher, wenn Sie an den ersten Weg gewöhnt sind, müssen Sie möglicherweise etwas Zeit darauf verwenden, den zweiten herauszufinden. Dies gilt jedoch auch umgekehrt. Also für mich die “es ist verwirrend” Argument ist völlig ungültig. Irgendein Neue Methode, die Sie lernen, ist zunächst verwirrend, Wenn Sie sich jedoch die Zeit nehmen, die Logik eines jeden zu verstehen, wird alles ausgeglichen.
Das ist mir persönlich lieber Gulp's API, weil es sauber istäh, und es reflektiert die Art, wie ich näher denke als Grunt. Das ist natürlich so völlig subjektiv und ist überhaupt kein Problem mit Grunt, es ist nur meine persönliche Vorliebe.
Wie man wählt
Ich glaube nicht, dass es keine Frage gibt, dass sowohl Grunt als auch Gulp großartige Werkzeuge sind und Menschen dabei geholfen haben, im Laufe der Jahre unzählige Stunden zu sparen. Grunt ist momentan etwas langsamer, hat aber eine viel größere Gemeinschaft. Gulp ist schneller, hat eine sauberere API, aber es fehlt ihm die Benutzerbasis.
Ich denke, dass die Entscheidung letztendlich dazu führen wird Kontinuität, verfügbare Plugins und Präferenz.
(1) Wenn Sie Grunt / Gulp schon länger benutzt haben und du bist glücklich damit, es gibt keinen grund zum wechseln.
(2) Wenn dein Projekt erfordert Plugins welche nicht von Gulp zur Verfügung gestellt werden und Sie nicht bereit sind, selbst eine zu schreiben, müssen Sie mit Grunt gehen.
(3) Wenn die obigen beiden Überlegungen für Sie nicht zutreffen, wird dies bevorzugt. Ich schlage vor, beide auszuprobieren und zu sehen welche bleibt bei dir.
Wie gesagt, ich habe mich für Gulp entschieden, weil mir die sauberere API besser gefällt, aber ich fühle mich mit Grunt sehr wohl, wenn ein Projekt es erfordert. Was solltest du nicht Lesen Sie, dass Mr. Besserwisser gesagt hat, dass Gulp besser ist und akzeptieren Sie es. Obwohl es Unterschiede gibt, gibt es keinen eindeutigen Gewinner und Beide Projekte können und werden koexistieren. Probieren Sie es aus und entscheiden Sie sich.
Hinweis: Möglicherweise möchten Sie auch die Meinungen von Benutzern wie Keith Cirkel (einem Javascript-Berater) in Betracht ziehen, der Ihnen die Verwendung empfiehlt weder. In seinem interessanten Warum sollten wir aufhören, Grunt & Gulp zu verwenden, schlägt er vor, npm zu verwenden.
Lesen Sie weiter
Es gibt viele andere hervorragende Artikel zu diesem Thema. Ich würde jedem der folgenden Punkte von Herzen weiterlesen; es tut nie weh zu lesen, was andere zu sagen haben!
- Grunt vs Gulp - Jenseits der Zahlen (besonderer Dank für die klaren Beispiele)
- Gulp, Grunzen, was auch immer
- Wählen Sie: Grunt, Gulp oder Npm?
- Speedtesting Gulp und Grunt
- Warum sollten wir mit Grunt & Gulp aufhören?
- Build Wars (benutze Pfeile um zu navigieren)
- Keine Notwendigkeit zu grunzen, nehmen Sie einen Schluck frische Luft