Wofür ist Grunzen?

77

Ich versuche, in Grunt einzusteigen, für das ich neu bin, aber ich verstehe seine Nützlichkeit nicht.

Ich verstehe, dass es ein Taskrunner ist. Ich verstehe, dass es verwendet werden kann, um Dinge wie Bundle, Uglify, Jshint, Minify usw. usw. usw. zu tun, alles, was in eine Skriptaufgabe umgewandelt werden kann.

Aber ich sehe nicht, welchen Vorteil dies bringt. Fast alle können ohnehin über die Befehlszeile ausgeführt werden, dh Sie können sie einfach mit einem einfachen Shell-Skript kombinieren. Es scheint mir, dass das Einrichten von grunt + gruntfiles und das Schreiben von Aufgaben mehr Arbeit als das Schreiben eines Shell-Skripts ist und nicht weniger.

Was fehlt mir daran?

temporärer_Benutzername
quelle
2
grunzen nimmt die grunzarbeit aus projekten. Aufgabe mit Javascript Optimizer, CSS Lint und mehr. Das Schreiben von benutzerdefinierten Shell-Skripten ist nicht ideal. Das Einrichten des Grunzens ist im Vergleich ziemlich einfach.
Etage
Ich bin sehr neu im Grunzen ... Kannst du mir einen Vorschlag geben, wie Jenkins mit einem Grunzen für ein eckiges Projekt bauen soll
Naanii

Antworten:

140

Grunt ist im Grunde ein Build- / Task-Manager, der auf NodeJS geschrieben wurde. Ich würde es das NodeJS-Stack-Äquivalent von ANT für Java nennen. Hier sind einige gängige Szenarien, unter denen Sie Grunzen verwenden möchten:

  1. Sie haben ein Projekt mit Javascript-Dateien, die minimiert werden müssen, und generieren im Allgemeinen einen separaten Front-End-Build (falls Sie beispielsweise JAVA für Ihr Backend verwenden). ( grunzen-beitragen-hässlich machen )
  2. Wenn Sie während der Entwicklung Code auf Ihrem Computer speichern, soll der Browser Ihre Seite automatisch neu laden (scheint eine kleine Sache zu sein, aber glauben Sie mir, das hat mir viel Zeit gespart). ( Live-Reload )
  3. Wenn ein Entwickler Code auf seinem Computer speichert, möchte er eine umfassende Liste von JS-Fehlern / allgemeinen Best-Practice-Verstößen anzeigen. ( grunzen-beitragen-jshint )
  4. Sie haben ein Projekt mit SASS / LESS-Dateien, die während der Entwicklung in CSS-Dateien auf dem Entwicklercomputer kompiliert werden müssen. Wenn er beispielsweise eine SASS-Datei speichert, soll diese automatisch in eine CSS-Datei kompiliert werden, damit sie in Ihre Seite aufgenommen wird . ( grunzen-beitragen-sass )
  5. Sie haben ein Team von Front-End-Entwicklern, die an der Benutzeroberfläche arbeiten, und ein Team von Back-End-Entwicklern, die am Back-End arbeiten. Sie möchten, dass die Front-End-Entwickler die Back-End-REST-APIs verwenden, ohne jedes Mal selbst Code kompilieren und bereitstellen zu müssen Maschinen. Falls Sie sich gefragt haben, ist dies mit einem typischen Webserver-Setup nicht möglich, da XHR vom Browser nicht domänenübergreifend sein darf. Grunt kann einen Proxy für Sie einrichten, der XHR-Anforderungen auf Ihrem eigenen System innerhalb des Grunt-Verbindungsservers auf ein anderes System umleitet! ( Grunt-Contrib-Proxy, Grunt-Contrib-Connect )

Ich glaube nicht, dass Ihr Shell-Skript all dies kann. Zusammenfassend lässt sich sagen, dass das Einrichten einer Gruntfile.js für jemanden mühsam ist, der wenig mit Javascript zu tun hat / neu bei nodeJS ist. Ich habe die gleichen Schmerzen wie ein Lernender durchgemacht, aber Grunt ist eine erstaunliche Software. Investieren Sie die Zeit, um eine richtige Gruntfile.js für Ihr Front-End-Projekt einzurichten, und Sie werden Gott dafür danken, dass Sie Ihr Leben viel einfacher gemacht haben :)

Der Vorteil gegen Shell-Skript:

  1. Wenn Sie für jede dieser Aufgaben ein Shell-Skript schreiben, ist es mühsam, diese zu verwalten und dann an jede Ihrer Anforderungen anzupassen. Gruntfile.js ist eigentlich ziemlich einfach. Es gibt eine Konfiguration, mit der Sie sie initiieren und die angibt, welche Aufgaben Sie ausführen möchten, die Quellen und Ziele für jede Aufgabe.

  2. Die Integration mit Projekt-Saatgutgeneratoren auf Yeoman, Gulp, ist ein weiterer wichtiger Faktor. Yeoman und Gulp kommen mit Gruntfile.js 'mit intelligenten Standardeinstellungen. Für jemanden, der der einzige UI-Mitarbeiter in seinem Team ist, ist dies für mich von unschätzbarem Wert!

  3. Wenn jemand, der an Frontend-Technologien arbeitet, mehr als eine Person mit Ihnen zusammenarbeitet, ist es für ihn ziemlich einfach, Grunt kennenzulernen, das bereits mit vielen Antworten auf SO gut dokumentiert ist, als Ihre Shell-Skripte. Dies kann in großen Teams ein Faktor sein.

  4. Die zahlreichen Plugins für Grunt erweitern die Basisfunktionalität. Sofern Ihr Shell-Skript nicht SEHR beliebt und SEHR modular ist, werden keine Plugins dafür erstellt. Dies gilt auch für die Einbeziehung neuer Front-End-Technologien in Ihr Projekt. Wenn Sie morgen Typoskript in Ihrem Projekt verwenden möchten, muss Ihr Shell-Skript dies berücksichtigen und es aus eigener Kraft berücksichtigen. Mit Grunt ist es genauso einfach wie "npm install" und das Hinzufügen einer Konfiguration.

shashanka n
quelle
13

Auch wenn ich mit den meisten Vorteilen einverstanden bin, auf die in Akzeptierte Antwort hingewiesen wird , muss ich dennoch die Nachteile berücksichtigen, die Keith Cirkel in Warum wir Grunt & Gulp nicht mehr verwenden sollten , hervorhebt

Daher werden einige Vorteile durch Grunt-Overheads widerlegt, und zumindest sollten Sie all dies bei Ihrer endgültigen Entscheidung über die Verwendung von Grunt berücksichtigen oder nicht.

Miguel Gamboa
quelle