Grunt (oprogramowanie)

Chrząknięcie
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 ; 6 lat temu ( 04.04.2016 )
Wersja stabilna
1.4.1 / 22 kwietnia 2021 ; 21 miesięcy temu ( 2021-04-22 )
Magazyn github.com/gruntjs/grunt _ _ _
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 gruntjs.com _

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 sekcji devDependencies .
  • 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ż

Dalsza lektura

Linki zewnętrzne