Ostatnio omawialiśmy co to jest NPM oraz co to jest Bower. Pora na coś z czego będzie nam naprawdę ciężko (do póki nie poznamy alternatywy ;)) żyć w świecie JavaScript.

Grunt JavaScript Task Runner
Grunt The JavaScript Task Runner

Grunt jest to system automatyzacji pracy – nie zależnie co robimy, czy to ma być statyczna strona w HTML i JavaScript, czy bardziej zaawansowana aplikacja wykorzystująca coffee script, czy też po prostu coś co chcielibyśmy z automatyzować. W odniesieniu do naszego świata .NET Grunt można porównać z MSBUILD lub też z innymi nakładkami (wraz z rozszerzeniami) na MSBUILD takimi jak psake, albacore itp. Czyli to co zwiemy potocznie build script.

Grunt umożliwia nam wykonanie określonych zestawów tasków na danym folderze, na danych plikach itp. Dla przykładu, jeżeli chcemy skopiować pliki z katalogu src do release możemy to zrobić za pomocą tasku w Grunt zamiast manualnie kopiować pliki. Czy też możemy uruchomić JS Hint na wszystkich plikach JavaScript, czy też odpalić śledzenie wszystkich plików i odpalić JS Hint jak tylko się jakiś plik zmieni lub zostanie dodany.

Możliwości jest wiele i nawet jakbym chciał to bym tego nie był wstanie wypisać w kilku postach :) Ale ze względu na to, że Grunt jest dość ciekawym rozwiązaniem, poświęcę mu przynajmniej dwa posty. W dalszej części tego zainstalujemy sobie Grunt a w kolejnym/kolejnych skonfigurujemy/pobawimy się trochę Gruntem i zobaczymy co możemy zrobić :)

By móc korzystać z Grunt musimy zainstalować command line interface (CLI):

npm install -g grunt-cli

Teraz będziemy mieli dostęp do komendy grunt, która przeszuka naszą strukturę katalogu w poszukiwaniu zainstalowego Grunta lokalnie – jeżeli go znajdzie, to wykona jego konfigurację, jeżeli nie to zwróci błąd.

Więc by móc skorzystać z grunt w naszym folderze/projekcie musimy go lokalnie zainstalować:

npm install grunt --save-dev

To jak już wiemy zainstaluje nam paczkę grunt i doda ją do devDepedencies. To o czym ja nie wspomniałem to to, że paczki są dodawane z numerem wersji i ze znakiem tyldy ~ do pliku package.json. Ta tylda oznacza, że jeżeli jest nowsza wersja niż ta określona po tyldzie, to jak można to warto ją zainstalować i tak też npm uczyni. Więc jeżeli będziemy pracować z Grunt i wykorzystywać jego paczki/taski to warto się zastanowić czy tej tyldy nie usunąć z pliku package.json ze względu na kompatybilność – może być tak, że nowa wersja Grunt nie będzie współpracowała z jakąś inną paczką gruntową. Ale decyzja o usunięciu zależy od was – ja nie usuwałem jej ale robiłem to świadomie :)

Na szczęście to co tutaj napisałem jest naprawdę bardzo dobrze opisane w dokumentacji dostępnej na stronach grunt.

Można by pomyśleć, że to już wszystko ;) ale tak nie jest :) By grunt nam działał wymagany jest plik gruntfile.js lub gruntfile.coffee w tym samym miejscu w którym plik package.json się znajduje (czyli w root folder).

Ale o tym w następnym artykule :)

4 KOMENTARZE

  1. Grunt to przydatne narzędzie, ale osobiście wolę korzystać z Gulp’a: http://gulpjs.com/
    Znacznie prostszy i świetnie radzi sobie z typowymi zadaniami automatyzacji, ale nadaje się również do tych bardziej złożonych. Polecam chociażby poczytać.

  2. [email protected]**

    :) o gulp jak sie wyrobie bedzie w pon, jak nie to we wt.

    Moim zdaniem trzeba poznac dwa narzedzie i samemu zadecydowac w ktorym sie czlowiek woli babrac – niektorzy wola strukture grunta, a niektorzy gulpa. do niektorych przemawia to ze grunt jest prawie, ze std w projektach JS i maja klopot z tym ze gulp “raczkuje”. a niektorzy wola to ze wlasnie raczkuje :)

    wiem, uzylem raczukuje mimo ze juz raczej zaczyna chodzic ;) ale chodzilo o przekaz.

    ps.: tez wole gulpa :)

  3. [email protected]**

    dzieki! :)

Comments are closed.