W projekcie opartym na WordPressie chcę utworzyć motyw wykorzystując SASS do zarządzania stylami CSS. Zmiany w pliku (plikach) SASS (np. /my-project/wp-content/themes/my-template/sass/) powodują aktualizację (lub utworzenie) wskazanego pliku (plików) ze stylami CSS (np. /my-project/wp-content/themes/my-template/css/my-style.css), a następnie aktualizację (lub utworzenie) wyjściowych plików CSS ze skompresowaną zawartością (np. /my-project/wp-content/themes/my-template/css/my-style.min.css).
Kolejnym zadaniem Netbeans będzie sprawdzanie, czy zaszły zmiany we wskazanych plikach JS szablonu (np. /my-project/wp-content/themes/my-template/js/my-script.js) i ew. utworzenie ich skompresowanej wersji (np. /my-project/wp-content/themes/my-template/js/my-script.min.js).
Przejdź na skróty:
Instalacja Node.js
Node.js to platforma umożliwiająca uruchamianie kodu JavaScript spoza przeglądarki. Zbudowana jest na tym samym silniku JavaScript, który użyty jest w Google Chrome (V8).
Pobieram najnowszą wersję instalatora ze strony https://nodejs.org/en/download/ (należy wybrać odpowiednią wersję do posiadanego systemu operacyjnego. W moim przypadku jest to Windows 64-bitowy) i instaluję:
npm -v
która zwróci mi numer wersji zainstalowanego Node.js
Instalacja SASS
SASS (Syntactical Awesome Stylesheet) jest to język skryptowy, którego kod jest przetwarzany do wynikowych plików CSS. Daje duże możliwości w zakresie wygodnego tworzenia rozbudowanych kaskadowych arkuszy stylów, umożliwia stosowanie zmiennych, pętli, struktur zagnieżdżonych, mixiny (funkcje), wygodne operacje na kolorach, takie jak np. rozjaśnianie, przyciemnianie, odwracanie kolorów i wiele innych przydatnych narzędzi. Stosowane są dwie konwencje kodowania:
- Sassy CSS (SCSS), wywodzący się z CSS, gdzie atrybuty grupujemy w klamrach i oddzielamy między sobą średnikami.
- SASS wywodzący się z języka HAML, gdzie pomijane są klamry i rozdzielające średniki
Dostępne są trzy znane mi metody instalacji kompilatora SASS:
- Ruby SASS (http://rubyinstaller.org/downloads/)
- Aplikacje (z własnym GUI), taki jeka np. Hammer (http://hammerformac.com/), Compass (http://compass.kkbox.com/), czy CodeKit (https://incident57.com/codekit/)
- Implementacja kompilatora SASS napisana w C/C++ (https://github.com/sass/libsass). Podobno szybsza kompilacja plików SCSS przy większych projektach (nie wiem, nie miałem okazji sprawdzić).
Decyduję się na Ruby SASS (nie jest przy tym konieczna znajomość Ruby). Pobieram najnowszą zalecaną wersję instalatora interpretera Ruby (http://rubyinstaller.org/downloads/). Rekomendowana jest najnowsza 32-bitowa wersja z serii 2.2.x. (wersja 64-bitowa w momencie pisania tego tutoriala nie jest zalecana, ze względu na swój zbyt młody wiek i możliwe przez to problemy z kompatybilnością)
gem install sass
Mamy już zainstalowany kompilator SASS. Teraz w Netbeans należy wskazać ścieżkę do kompilatora:
Instalacja kompilatora GULP
Gulp.js to system automatyzacji pracy oparty o platformę Node.js. Umożliwia wykonywanie określonych zestawów zadań (tzw. tasków) na danym folderze (plikach). Możemy np ustawić task, który spowoduje przeszukanie wszystkich plików CSS w danym folderze, połączenie ich, a następnie kompresję i zapisanie w nowej lokalizacji.
Aby zainstalować GULP pod Windows potrzebny będzie node.js (opis instalacji na początku tego tutoriala). Uruchamiam okno wiersza poleceń i instaluję gulp’a globalnie funkcją
npm install -g gulp
Umożliwi to wykonywanie poleceń GULP’a z poziomu wiersza poleceń.
Przy każdym projekcie wymagana jest lokalna instalacja GULP’a.
Wybieram nowy plik:
Do naszych potrzeb najistotniejsze informacje związane z plikiem package.json, to:
- wartość „name” musi być wypełniona i unikalna
- wartość „version” musi być wypełniona i zgodna ze standardem
- „dependencies” zamieniamy na devDependencies (lub dodajemy kolejną właściwość: „devDependencies„, pamiętając o dodaniu przecinka po „dependencies”: {} )
Czas na kilka słów wytłumaczenia. Co to jest dependencies i devDependencies, oraz czym się różnią (poza nazwą).
W dependencies i devDependencies podajemy moduły, które mają zostać pobrane i być dostępne w taskach związanych z naszym projektem.
Mój przykładowy plik package.json wygląda następująco:
Aby móc skorzystać z GULP, musimy jeszcze utworzyć plik gulpfile.js w folderze głównym projektu.