Grunt (oprogramowanie)
Oryginalni autorzy | Bena Almana |
---|---|
Deweloperzy | Ben Alman, Tyler Kellen, Kyle Robinson Young, Vlad Filippov, Sindre Sorhus, Isaac Durazo, Jarrod Overson, Tim Branyen, Jörn Zaefferer, James Smith, Dave Geddes |
Pierwsze wydanie | 4 kwietnia 2016 |
Wersja stabilna | 1.4.1 / 22 kwietnia 2021
|
Magazyn | |
Napisane w | JavaScript |
System operacyjny | Linuks , macOS , Windows |
Platforma | Node.js |
Dostępne w | język angielski |
Typ | Runner zadań, narzędzie do budowania |
Licencja | Licencja MIT |
Strona internetowa |
Grunt to program uruchamiający zadania JavaScript , narzędzie używane do automatycznego wykonywania częstych zadań, takich jak minifikacja , kompilacja , testy jednostkowe i linting . Wykorzystuje interfejs wiersza poleceń do uruchamiania niestandardowych zadań zdefiniowanych w pliku (znanym jako plik Grunt). Grunt został stworzony przez Bena Almana i jest napisany w Node.js. Jest dystrybuowany przez npm . Według stanu na październik 2022 r. w ekosystemie Grunt dostępnych było ponad 6000 wtyczek.
Firmy korzystające z Grunt to Adobe Systems , jQuery , Twitter , Mozilla , Bootstrap , Cloudant , Opera , WordPress , Walmart i Microsoft .
Przegląd
Grunt został pierwotnie stworzony przez Bena Almana w 2012 roku jako wydajna alternatywa dla uproszczenia pisania i utrzymywania zestawu zadań związanych z procesem kompilacji JavaScript w jednym dużym pliku. Został zaprojektowany jako oparte na zadaniach narzędzie do budowania wiersza poleceń dla projektów JavaScript.
Grunt służy przede wszystkim do automatyzacji zadań, które muszą być wykonywane rutynowo. Istnieją tysiące wtyczek, które można zainstalować i używać bezpośrednio do wykonywania niektórych często używanych zadań. Jedną z najbardziej pożądanych cech Grunta jest to, że można go w dużym stopniu dostosowywać — tj. umożliwia programistom dodawanie, rozszerzanie i modyfikowanie niestandardowych zadań w celu dopasowania ich do osobistych potrzeb; każde zadanie ma zestaw opcji konfiguracyjnych, które użytkownik może ustawić. Ponadto Grunt oferuje możliwość definiowania niestandardowych zadań, które mogą łączyć wiele istniejących zadań w jedno zadanie lub dodawać zupełnie nową funkcjonalność.
Podstawowe koncepcje
Interfejs linii komend
Interfejs wiersza poleceń (CLI) Grunta można zainstalować globalnie przez npm . Wykonanie gruntu
załaduje i uruchomi wersję Grunta zainstalowaną lokalnie w bieżącym katalogu. Dlatego możemy przechowywać różne wersje Grunta w różnych folderach i uruchamiać każdą z nich według własnego uznania.
Akta
Aby użyć Grunta w projekcie, należy utworzyć dwa określone pliki w katalogu głównym, mianowicie package.json i Gruntfile.
-
package.json - zawiera metadane projektu, w tym nazwę, wersję, opis, autorów, licencje i jego zależności (wymagane przez projekt wtyczki Grunt). Wszystkie zależności są wymienione w
zależnościach
lub w sekcjidevDependencies
. - Gruntfile — prawidłowy plik JavaScript lub CoffeeScript o nazwie „Gruntfile.js” lub „Gruntfile.coffee”, który zawiera kod do konfigurowania zadań, ładowania istniejących wtyczek i/lub tworzenia niestandardowych zadań.
Zadania
Zadania to moduły wykonujące określone zadanie. Są one zdefiniowane w pliku Gruntfile.
Deweloperzy mogą ładować predefiniowane zadania z istniejących wtyczek Grunt i/lub pisać niestandardowy kod, aby zdefiniować własne zadania w zależności od ich wymagań. Po zdefiniowaniu zadania te można uruchomić z wiersza poleceń, po prostu wykonując grunt <taskname>
. Jeśli <nazwa zadania>
zdefiniowana w pliku Gruntfile jest „domyślna”, wystarczy po prostu wykonać chrząknięcie .
Przykład
Poniżej znajduje się przykład pliku Gruntfile napisanego w JavaScript, który pokazuje, jak ładować wtyczki, tworzyć niestandardowe zadania i je konfigurować:
moduł . exports = function ( grunt ) { // Konfiguracja zadania grunt . initConfig ({ nazwazadania1 : „Konfiguracja zadania1” , nazwazadania2 : „Konfiguracja zadania2” }); // Ładuje wtyczki grunt . loadNpmTasks ( 'pluginName1' ); chrząknięcie . loadNpmTasks ( 'pluginName2' );
// Niestandardowe zadania chrząknięcie . registerTask ( 'customTaskName1' , 'Opis zadania niestandardowego' , function ( taskParameter ) { // Instrukcje niestandardowe }); // Łączenie wielu zadań w jedno zadanie chrząknięcie . registerTask ( 'customTaskName2' , [ 'taskName1' , 'customTaskName1' ]); // Zadanie domyślne — uruchamia się, jeśli nie podano nazwy zadania
chrząknięcie . registerTask ( 'default' , [ 'customTaskName2' ]); };
W powyższym przykładzie wykonanie komendy grunt
spowoduje uruchomienie <customtaskName2>
, które zostało zdefiniowane powyżej jako kombinacja zarówno <taskName1>
, jak i <customTaskName1>
.
Wtyczki
Wtyczki to kod wielokrotnego użytku, który definiuje zestaw zadań. Każda wtyczka zawiera wewnętrznie katalog zadań z plikami JavaScript, które mają taką samą składnię jak plik Grunt. Większość wtyczek Grunta jest publikowana ze słowem kluczowym gruntplugin
w npm i poprzedzona przedrostkiem grunt
. Pomaga to Gruntowi w pokazywaniu wszystkich wtyczek na liście wtyczek Grunta . Wtyczki oficjalnie obsługiwane przez Grunt są poprzedzone przedrostkiem grunt-contrib
i są również oznaczone symbolem gwiazdki na liście wtyczek. Niektóre popularne wtyczki obejmują grunt-contrib-watch , grunt-contrib-czyste , grunt-contrib-uglify .
Deweloperzy mogą nawet tworzyć własne wtyczki Grunt za pomocą wtyczki grunt-init
i publikować je w npm za pomocą polecenia npm publikuj
.
Zalety
Oto niektóre z zalet używania Grunta:
- Wszystkie biegacze zadań mają następujące właściwości: spójność, skuteczność, wydajność, powtarzalność itp.
- Dostęp do wielu predefiniowanych wtyczek, które można wykorzystać do pracy z zadaniami JavaScript i zawartością statyczną.
- Umożliwia użytkownikom dostosowywanie zadań za pomocą predefiniowanych wtyczek.
- Preferuje podejście konfiguracyjne do kodowania.
- Umożliwia użytkownikom dodawanie własnych wtyczek i publikowanie ich w npm .
Porównanie
Mrówka
Ant lub Apache Ant to narzędzie do budowania oparte na Javie . Ant ma nieco ponad sto wbudowanych zadań, które lepiej nadają się do projektów ze strukturą kompilacji Java. Pisanie niestandardowego kodu w Ant wymaga od użytkowników napisania JAR i odniesienia do niego z XML . Zwiększyłoby to niepotrzebną złożoność projektów, które same w sobie nie wymagają Javy. Konfiguracje kompilacji Ant są wyświetlane w formacie XML , a nie w formacie JSON .
Grabie
Rake pozwala programistom definiować zadania w języku Ruby . Rake nie ma koncepcji wtyczek ani predefiniowanych zadań, co oznacza, że wszystkie wymagane działania muszą zostać napisane, a następnie wykonane. To sprawia, że rozwój jest kosztowny w porównaniu z Gruntem, który ma duży zestaw wtyczek wielokrotnego użytku.
Łyk
Gulp.js to narzędzie do uruchamiania zadań oparte na JavaScript, podobne do Grunt, ponieważ oba mają architekturę modułową i są oparte na npm . Zadania Gulp są definiowane przez kod, a nie przez konfigurację. Gulp jest szybszy od Grunta. Grunt używa plików tymczasowych do przesyłania danych wyjściowych z jednego zadania do drugiego, podczas gdy w Gulp pliki są przesyłane między zadaniami.
Zobacz też
- Node.js
- np
- Buduj automatyzację
- Lista oprogramowania do automatyzacji kompilacji
- Apache Maven
- Grabie
- Yeoman (informatyka)
- modernizacja
- Ramy JavaScript
- biblioteka JavaScriptu
Dalsza lektura
- Krzyk, James (2015). Pro Grunt.js . Apress. ISBN 978-1-4842-0013-1 .
- Pillora, Jamie (2014). Pierwsze kroki z Gruntem: JavaScript Task Runner . Packt Publishing Ltd. ISBN 978-1-78398-062-8 .