Ostatnia aktualizacja:

1 września 2025

Opublikowano:

9 maja 2017

Gulp vs Grunt

Gulp vs Grunt

W jednym z poprzednich artykułów poruszony został temat preprocesorów CSS. Natomiast w niniejszym porównam dwa narzędzia przydatne do automatyzacji pracy każdego web developera. Ułatwiają pracę z preprocesorami, takimi jak Sass czy LESS, optymalizują zasobu CSS czy JavaScript oraz wczytują zmiany automatycznie za każdym razem, gdy plik zostanie zapisany.

W tym artykule dowiesz się:
  1. Instalacja Gulp i Grunt
  2. Podstawy konfiguracji Gulp
  3. Najważniejsze funkcje
  4. Podstawy konfiguracji Grunt
  5. Konfiguracja Grunta – initConfig
  6. Wady i zalety – Gulp vs Grunt

Instalacja Gulp i Grunt

Oba narzędzia oparte są o platformę Node.js, dopiero po jej instalacji będzie możliwa instalacja Gulp’a lub Grunt’a, a odbywa się to poprzez wywołanie odpowiedniej komendy w konsoli.

GULP: npm install -g gulp
GRUNT: npm install -g grunt-cli

Obie komendy służą do instalacji globalnej, komenda do instalacji lokalnej wygląda następująco:

GULP: npm install gulp --save-dev
GRUNT: npm install grunt --save-dev

Przed rozpoczęciem korzystania z Gulpa czy Grunta musimy najpierw stworzyć plik konfiguracyjny i umieścić go w głównym katalogu naszego projektu. W przypadku Gulp’a będzie to gulpfile.js, a w przypadku Grunt’a gruntfile.js, oba pliki można stworzyć z konsoli za pomocą komendy touch nazwa_pliku.

Podstawy konfiguracji Gulp

Przykładowa minimalna zawartość pliku, w nim zawarta będzie cała konfiguracja:

var gulp = require('gulp');
    gulp.task(‘default’,function() {
    console.log(‘Hello!’);
});

Transformacja pliku LESS do CSS

W tym celu należy zainstalować wtyczkę gulp-less, w tym celu w konsoli wpisujemy:

npm install --save-dev gulp-less

Następnym krokiem będzie konfiguracja zadania i w tym celu wykorzystany nasz wcześniej utworzony plik gulpfile.js:

gulp = require('gulp'),
  less = require('gulp-less'),
  path = require('path');
gulp.task('less', function () {
  return gulp.src('./layout/**/*.less')
    .pipe(less({
      paths: [ path.join(__dirname, 'less', 'includes') ]
    }))
    .pipe(gulp.dest('./public/css'));
});

Na początku należy zaimportować wtyczki za pomocą require. Zadanie definiujemy poprzez użycie funkcji task. Zostaną tutaj przekazane dwa parametry,mianowicie nazwa zadania oraz funkcja, która mówi gdzie implementujemy nasze zadanie. Jedna z linii przekazuje ścieżkę do plików LESS, użycie *.less informuje o tym, że interesują nas tylko pliki z takim rozszerzeniem. Kolejne linie kodu (8-10) służą do transformacji plików LESS na CSS, w tym celu użyto funkcji pipe. Linia 11 zwraca nam plik wynikowy transformacji.

Najważniejsze funkcje

  • gulp.task – służy do definiowania naszych zadań
  • gulp.watch – uruchamia daną funkcję jak tylko zostaną zmienione pliki
  • gulp.src – wskazuje na pliki z których korzystamy
  • gulp.dest – zapisuje plik do określonej lokalizacji

Podstawy konfiguracji Grunt

Podstawowa zawartość pliku

module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        taskName: {         //nazwa zadania
            options: {      //opcje

            },
            operations: {   //operacje
            }
        }
    });
    grunt.loadNpmTasks('grunt-module');                 // w taki sposób ładujemy nasze moduły
    grunt.registerTask('default', ['taskName']);        // określany jakie zadania wykonują się po wpisaniu w konsoli grunt
};

Transformacja pliku SASS do CSS

W konsoli wpisujemy następujące polecenie:

npm install grunt-libsass --save-dev

Po zainstalowaniu wtyczki możemy przejść do konfiguracji w pliku gulpfile.js

libsass: {                                          // zadanie główne
    files: {
        expand: true,
        src: ['css/style.scss'],               // pliki na których domyślnie ma być wykonane zadanie
        dest: '',                                    // gdzie mają się zapisać skompilowane pliki CSS (w tym przypadku zapisze się w lokalizacji pliku Sass)
        ext: '.css'                                // rozszerzenie po skompilowaniu
    }
}

Załadowanie zadanie odbywa się poprzez użycie:

grunt.loadNpmTasks('grunt-libsass');

Nasz plik powinien teraz wyglądać następująco:

module.exports = function(grunt) {
            grunt.initConfig({
                    pkg: grunt.file.readJSON('package.json'),
                libsass: {
                        files: {
                                expand: true,
                                src: ['css/style.scss'],
                                dest: '',
                                ext: '.css'
                        }
                    }
            });

            grunt.loadNpmTasks('grunt-libsass');
  };

Aby zmiany były widoczne zaraz po zapisaniu ich w danym pliku warto dopisać jeszcze:

watch: {
            scss: {                         // możemy określić dowolną nazwę
                    files: ['css/*.scss'],  // określamy na jakich plikach pracujemy
                    tasks: ['libsass']      // wybieramy zadania jakie na nich wykonujemy, po kolei
            }
  }

Natomiast zadanie ładujemy za pomocą:

grunt.loadNpmTasks('grunt-contrib-watch');

Dodajemy również funkcję watch do domyślnych zadań:

grunt.registerTask('default', ['watch']);

Po zapisaniu pliku gulpfile.js i wywołania w konsoli polecenia grunt, każda modyfikacja wykonana na pliku SASS w folderze css będzie kompilowana i zapisywana do pliku wynikowego. Trzeba jednak pamiętać, że zamknięcie konsoli, zamknie nam zadanie i kompilacja zostanie przerwana.

Konfiguracja Grunta – initConfig

  • grunt-contrib-qunit – odpalenie testów
  • grunt-contrib-uglify – zminifikuje pliki JavaScript
  • grunt-contrib-cssmin – zminifikuje pliki CSS
  • grunt-contrib-concat – połączy pliki w jeden
  • grunt-contrib-copy – kopiuje pliki z jednej lokalizacji do drugiej
  • grunt-contrib-htmlmin – zminifikuje pliki HTML

Wady i zalety – Gulp vs Grunt

GulpGrunt
Zaletyzapewnia minifikację i konkatenację
używa czystego kodu JavaScript
konwertuje pliki (np Sass do CSS)
operacje wykonywane są w pamięci
sposób definiowania tasków jest przejrzysty
ponad 2000 wtyczek
łatwość w wykonywaniu minifikacji, kompilacji i testowaniu plików
operacje są wykonywane na plikach tymczasowych, przez co jest mniej wydajny
ponad 5000 wtyczek
Wadynie można wykonywać wiele zadań
nowicjusz w porównaniu z Gruntem
sposób definiowania tasków jest nieczytelny
pakiety nie są jednocześnie aktualizowane Node.js
jeśli pakiety npm zostały zaktualizowane, trzeba czekać aż autor Grunta aktualizuje go

Pomimo iż zauważyłem, że Gulp jest rzadziej zalecanym narzędziem do automatyzacji pracy web developera, to liczba jego zwolenników z dnia na dzień wzrasta. Z nim mam największą styczność przy pracy w różnych projektach. Z informacji od kolegów i tego co wyczytałem na forach, to właśnie Gulp jest tym narzędziem, który wykonuje operacje w szybciej i to dlatego coraz częściej się po niego sięga.

Ostatnia aktualizacja:

1 września 2025

Opublikowano:

9 maja 2017

W tym artykule dowiesz się:
  1. Instalacja Gulp i Grunt
  2. Podstawy konfiguracji Gulp
  3. Najważniejsze funkcje
  4. Podstawy konfiguracji Grunt
  5. Konfiguracja Grunta – initConfig
  6. Wady i zalety - Gulp vs Grunt

Polecane artykuły

Magiczne metody PHP

Magiczne metody PHP

Magiczne metody w PHP’ie, to metody z zarezerwowanym prefiksem w postaci podwójnego podkreślenia „__”. Funkcje te nie są bezpośrednio używane przez programistę, lecz są one automatycznie wywoływane przez interpreter w odpowiedzi na poszczególne zachowania danej klasy, dlatego są nazwane ‘magicznymi’. __construct() Funkcja odpala się w momencie utworzenia obiektu, wykorzystujemy ją do przygotowania wszystkich potrzebnych danych […]

Czytaj więcej
Moduły Magento - hit czy kit? - wideo

Moduły Magento – hit czy kit?

Jedną z przewag Magento (ale też wielu innych sklepów open source) są gotowe moduły, które można wykorzystać podczas wdrożenia i w ten sposób obniżyć sobie koszt projektu. Ale uwaga! Jeśli przesadzicie z ich ilością lub wybierzecie takie, których jakość wykonania pozostawia wiele do życzenia - to więcej będzie z tego kłopotu niż pożytku. W tym nagraniu dzielę się swoimi spostrzeżeniami, jak podejść do kwestii gotowych wtyczek, żeby rzeczywiście osiągnąć z nich korzyści.

Czytaj więcej
sklep woocommerce cena i koszty

Sklep WooCommerce cena i koszty – czy to rzeczywiście się opłaca?

Planujesz postawić swój sklep internetowy na WordPressie i zastanawiasz się, ile będzie Cię to kosztować? Czy aby na pewno jest to rozwiązanie darmowe? Chcesz wiedzieć, czy wdrażając sklep WooCommerce cena nie będzie zbyt wysoka? W tym artykule poznasz realne koszty sklepu WooCommerce – nie tylko te „na papierze”, ale również te prawdziwe, o których nie […]

Czytaj więcej
Bezpieczeństwo Magento

Czy Magento jest bezpieczne?

Szukając idealnej platformy e-Commerce, rozważasz zapewne nie tylko możliwości danego silnika w zakresie wymyślnych funkcjonalności, ale również poziom bezpieczeństwa, jaki może Ci on zagwarantować. Patrząc na to z szerszej perspektywy, to od tego właśnie powinniśmy zacząć. Co z tego, że Twój sklep będzie umożliwiał przymierzanie produktów za pomocą technologii VR, jak dane klientów i pieniądze […]

Czytaj więcej

Skontaktuj się z nami

Opowiedz nam o swoich ambicjach związanych z e-commerce i pozwól nam wspólnie je zrealizować.

Skontaktuj się z nami
Expert Consultation

Porozmawiajmy!

Umów darmową konsultację