Grunt – Automatyzacja przywracania paczek

Często zdarza się tak, że po ściągnięciu projektu z jakiegoś gitowego repozytorium, po odpaleniu, czeka nas żmudne i mozolne klikanie „Restore Packages…”. I nie ma tu znaczenia czy są to paczki nugetowe, czy paczki bowerowe. Oczywiście – jak (prawie!) wszystko – i to można zautomatyzować. Pomocne będą tu Gruntowe taski.

Żeby zacząć pracę z Gruntem musimy dodać plik konfiguracyjny Grunt. Robi się to dokładnie tak samo jak opisałem w poprzednim artykule dodawanie pliku konfiguracyjnego Bower. Nie będę zatem powielać informacji. Po stworzeniu pliku jego zawartość jest dość uboga. Wypełnijmy ją zatem w sposób następujący:
module.exports = function (grunt) {
    grunt.initConfig({
        bower: {
            install: {
                options: {
                    targetDir: "wwwroot/lib",
                    layout: "byComponent",
                    verbose: true,
                    install: true,
                    bowerOptions: {}
                }
            }
        }
    });

    grunt.loadNpmTasks("grunt-bower-task");
};


Pierwsza część dotyczy konfiguracji taska bower:install. Dostępne możliwości można znaleźć na oficjalnej stronie pluginu grunt-bower-task. Druga część – grunt.loadNpmTasks("grunt-bower-task"); powoduje załadowanie wspomnianego już pluginu. W ten oto sposób przygotowaliśmy konfigurację zadania, które po uruchomieniu w folderze wwwroot/lib porobi nam porządki oraz zainstaluje wymagane paczki.

W wyróżnionej przeze mnie linijce mowa jest o załadowaniu tasków NPM. NPM to Node Package Manager. Kolejny package manager, podobny do już znanego Bowera. Różnica nie jest oczywista. Właściwie obydwa package managery różnią się tylko (i aż) sposobem rozwiązywania dependencies. Dodam tylko, że Bower jest zoptymalizowany pod front-end i stara się, by ilość ładowanych plików była jak najmniejsza. Kontynuując – mowa była o NPM, a NPM nie jest jeszcze w naszym projekcie skonfigurowany. Tak więc – jak wcześniej dodajmy plik konfiguracyjny NPM. Jego ostateczna wersja dla naszych na chwilę obecną potrzeb powinna wyglądać następując:
{
	"version": "1.0.0",
	"name": "cook book",
	"private": true,
    "devDependencies": {
      "grunt": "0.4.5",
      "grunt-bower-task": "0.4.0"
  }
}
Pamiętajcie tylko o tym, żeby w „name” podać wartość z małych liter. Na tym polu nałożony jest filtr regexowy ^[^A-Z]+$. Oznacza to tyle, że jeśli gdziekolwiek pojawi się w tym polu wielka litera, to plik konfiguracyjny będzie uznany za nieprawidłowy – przez co NPM nie zadziała. Tak, naciąłem się na to. Godne uwagi w tym pliku są tylko „devDependencies”, w których specyfikujemy, że chcemy korzystać z pluginów „grunt” i wspomnianego już wcześniej „grunt-bower-task”.

Po tak skonfigurowanym projekcie czas przejść do tasków – Wystarczy kliknąć prawym przyskiem na plik grunfile.js i wybrać opcję „Task Runner Explorer”. Po kliknięciu ikonki „Refresh” powinien pojawić nam się task „bower:install”:

grump tasks

W tym momencie klikamy na nim PPM -> Bindings i wybieramy jedną (lub kilka) z możliwych opcji. W moim przypadku jest to „Project Open”. Dla formalności – ta operacja modyfikuje plik „gruntfile.js” i dodaje na jego początku komentarz: /// <binding ProjectOpened='bower:install' />

To wszystko. Już nie musimy przejmować się przywracaniem paczek i czy na pewno to zrobiliśmy. Ot, cała filozowia 🙂

Post jest elementem serii wpisów dotyczących projektu CookBook realizowanego w ramach konkursu „Daj się poznać”.
DSP2016 logo RGB color-1

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *