CSS властивості
ГлавнаяGulpСтворення першого завдання

Створення першого завдання

196

Тепер наші необхідні інструменти встановлені і ми можемо почати реальну роботу — створити наше завдання (мінімізація CSS).

Щоб повідомити Gulp, які завдання він повинен запускати, ми повинні створити спеціальний файл, який міститиме список завдань — файл з ім'ям gulpfile.js.

Отже, повернемося до папки нашого проекту і створимо gulpfile.js. Після цього папка повинна виглядати так:

  • Build
    • index.html
    • package.json
    • gulpfile.js

До того як Gulp запустить наші завдання, йому також потрібні деякі інші інструменти (пакети) для допомоги. У системі Gulp є практично будь-яке завдання для всього, про що ви тільки можете подумати (ви можете переглянути пакети тут).

Так що відредагуємо наш gulpfile.js та додамо список усіх необхідних пакетів/залежностей. Для нашої мети (мінімізація CSS) нам потрібен пакет з ім'ям gulp-minify-css.

Для перерахування пакетів у gulpfile.js нам не потрібно відкривати файл у текстовому редакторі, просто потрібно виконати наступну команду:

>
<code>npm install--save-dev gulp-minify-css

Після цього папка node_model знову зміниться і буде виглядати так:

  • Build/
    • index.html
    • package.json
    • gulpfile.js
    • node_modules/
      • gulp/
      • gulp-minify-css/

Це означає, що ми готові почати. Тепер відкрийте файл gulpfile.js у текстовому редакторі та додайте наступний код:

<code data-language="javascript">var gulp=require('gulp'); var minifyCss=require('gulp-minify-css'); gulp.task('mincss', function(){ var fb=gulp.src('main.css'); fb.pipe(minifyCss()); fb.pipe(gulp.dest('main')); return fb;});

Перевіримо і переконаємося, що це саме те, що нам потрібно для створення CSS-файлу. Зробіть CSS-файл у корені нашого проекту, назвіть його main.css та відкрийте текстовим редактором. Ваша папка має виглядати так:

  • Build/
    • index.html
    • package.json
    • gulpfile.js
    • node_modules/
      • gulp/
      • gulp-minify-css/
    • main.css

Введіть наступний код у CSS:

body{ margin:0; padding:0; background-color:teal; }

На даний момент нічого серйозного не відбувається. Тепер відкрийте командний рядок, перейдіть в корінь проекту та введіть наступну команду:

<code>gulp mincss

Нова папка з ім'ям main має з'явитися у проекті з файлом main. css всередині. Якщо ви відкриєте цей файл, ви повинні побачити всередині ваш мінімізований CSS. У моєму випадку я отримав таке:

body{margin:0;padding:0;background-color:teal}

Виглядає чудово!

Пояснення того, що дійсно сталося

Все сталося так швидко, що ви не могли бачити, що трапилося насправді і якщо я це не поясню, ви будете мене Ненавидіти.

Насправді, як ви могли помітити, всю роботу робить gulpfile.js. І якщо ми розглянемо його, то побачимо два основні розділи:

Перший: розділ з require

<code data-language="javascript">var gulp=require('gulp') ; var minifyCss=require('gulp-minify-css');

Ці два рядки імпортують gulp і gulp-minify-css. Це як require() в PHP.

І другий: розділ визначення завдань

<code data-language="javascript"> gulp.task('mincss', function(){ var fb=gulp.src('main.css'); fb.pipe(minifyCss()); fb.pipe(gulp.dest('main')); return fb;});

Тут дозвольте мені переключити вашу увагу на інше. Другий розділ був написаний таким чином, щоб показати (початківцям або тим, хто не звик до JavaScript) різні рядки в коді окремо. У звичайних ситуаціях ви будете писати його наступним чином і так я робитиму наступного разу:

<code data-language="javascript">gulp.task('mincss', function(){ return gulp. src('main.css') .pipe(minifyCss()) .pipe(gulp.dest('main')); });

Ця частина бере функцію gulp.task() і передає їй два параметри: бажане ім'я для нашого завдання (mincss в моєму випадку) та замикання (function()).

Тіло замикання використовує концепцію під назвою перетікання, яка дозволяє передавати дані через безліч функцій (потік) і отримувати дані назад в кінці в іншій формі, подібно до реальної труби. Ви пропускаєте через трубу воду, ставите в якомусь місці фільтр і коли вода проходить через нього вона фільтрується і на виході виходить чиста вода. Отже, спочатку ми вказуємо для Gulp файл, який хочемо пропустити по трубі:

<code data-language="javascript">gulp.src('main.css')

Потім пропускаємо його через функцію minifyCss(), яка мінімізує наш CSS та відправляє його в наступну функцію:

<code data-language="javascript">.pipe(minifyCss())

Далі вказуємо Gulp, де розмістити мінімізований CSS-файл:

<code data-language="javascript">.pipe(gulp.dest('main'));</code> 

Для тих, хто віддає перевагу ілюстраціям, ви можете наочно все побачити на наступній картинці:

Резюме

Це лише вершина айсберга. Є ще багато всього, що ви можете зробити. Ви можете бачити, що кожного разу при зміні файлу CSS вам потрібно повернутися до командного рядка для запуску gulp mincss з метою його мінімізації. Ми повинні автоматизувати це відстежуючи зміни у CSS-файлі. При натисканні Ctrl + S файл буде збережений і мінімізований автоматично і, якщо можливо, зі спливаючою повідомленням.

У наступному уроці ми розглянемо як компілювати Sass-файли та оновлювати браузер щоразу при збереженні змін.