Простая и быстрая сборка frontend проекта с помощь gulp. - Блог ITVDN
ITVDN: курсы программирования
Видеокурсы по
программированию
РУС
  • РУС
  • УКР

Заказать звонок

    Выбери свою IT специальность

    Подписка

    Заказать звонок

    +38 099 757 27 82
    РУС
    • РУС
    • УКР

    Простая и быстрая сборка frontend проекта с помощь gulp

    advertisement advertisement
    Введение

    В этой статье я детально опишу процесс сборки FrontEnd проекта, который стал незаменимым в моей ежедневной работе, очень облегчил рутинную работу и предоставил больше свободного времени для других задач. 


    Сейчас в интернете существует большое число различных сборщиков и подходов к ней, и каждый выбирает для себя что-то по вкусу. Я только опишу вам один из многих подходов, а вы уже решите сами, подходит он вам или нет.

    Как уже все догадались, речь пойдет о сборщике под названием Gulp.

    Скажу сразу, что у вас  должен быть установлен Node.js. У кого не установлен, то вам сюда https://nodejs.org/en/download/

    Итак, приступим:

    Откроем консоль и создадим папку

    mkdir nebo15

    Зайдем в папку, которую только что создали

    cd nebo15/

    запустим команду инициализации проекта:

    npm init

    Заполняйте поля теми данными, которые вы знаете, остальные просто пропускайте, нажав Enter. На выходе получим что-то наподобие этого:

    {
      
    "name": "nebo15",
     
    "version": "1.0.1",
     
    "description": "first gulp project",
     
    "author": "stranger",
     
    "license": "MIT",

      "main": "main.js",
      
    "dependencies": {
         
    "gulp": "^3.9.0"
       }
    }

    В строке dependencies я указал, что нам понадобится gulp и тут же будут появляться все наши плагины.

    Основные плагины, с которыми я хочу вас познакомить:

    gulp-minify-css — нужен для минимизации CSS кода, создаст один файл *.min.css

    gulp-uglify — будет минимизировать наш JS, создаст один файл *.min.js

    gulp-autoprefixer — авто-добавление добавляет вендорные префиксы (-webkit, -o, -moz) к CSS свойствам, нужно чтобы ваш код поддерживался во всех браузерах.

    browser-sync — понадобится  для запуска локального сервера.

    gulp-sass — предназначен для компиляции SCSS и SASS кода.

    gulp-sourcemaps — предназначен для генерации css sourscemaps, которые понадобятся при отладке кода

    //= footer.html   эти комментарии будут заменены на код с файла при компиляции

    gulp-watch — предназначен для отслеживания за изменениями файлов.

    rimraf —  для очистки папок по завершению сборки (rm -rf для nodejs).

    После установки всех плагинов у нас будет файл package.json:

    делается это при помощи команды

    npm install name_of_package --save-dev 

    где --save-dev означает то, что пакет будет остановлен в проект, а не глобально. Для глобальной установки используйте тег -g.

    Bower

    Сейчас просто не представляю своей жизни без установщика Bower и хочется верить, что вы не исключение. Если же нет, то почитать о Bower можно тут.

    Давайте поставим его в наш проект. Для установки напишем в консоли:

    bower init

    Заполняйте поля те, что знаете, остальное пропускайте. В конце вы получите файл bower.json:

    {
     
    "name": "nebo15",
     
    "version": "1.0.0",
     
    "authors": [
       
    "Dima"
      ],
     
    "license": "stranger",
     
    "ignore": [
       
    "**/.*",
       
    "node_modules",
       
    "bower_components",
      ],

    "dependencies": {
       
    "normalize.css": "*",
       
    "jquery": "2.*"
    }

    Установим пакеты с dependencies:

    bower i

    Давайте создадим базовую структуру и настроим сборку нашего проекта.

     

    Структура проекта:

    Сначала нужно 2 папки. Первая (src), в которой мы собственно будем писать код, и вторая (build), в которую сборщик будет собирать файлы.

     Текущая структура у нас выглядит так:

    В src создали типичную структуру для проекта. Сделаем main файлы в папках js/ и style/ и создадим стартовую index.html страничку такого содержания.

    index.html



    Структура папки src теперь будет выглядеть так:

    Тут все просто:

    fonts —папка с шрифтами

    img — папка с картинками

    js — папка со скриптами. Тут в корне - main.js, а рабочие файлы в папке partials

    style — папка со стилями. Тут в корне - main.scss, а рабочие файлы в папке partials

    template — тут будем хранить  html код

    Все html страницы, которые мы верстаем, будут лежать в папке src

    Gulpfile.js

    Итак, начнем, сначала подключим все зависимости в этот файл.

    gulpfile.js

    Так же создадим js объект, в который пропишем все нужные нам пути, чтобы при необходимости легко в одном месте их редактировать:

    Веб сервер

    Чтобы иметь livereload, нам необходимо написать себе веб-сервер. Для этого напишем следующую таску

    :

    Сборщик для html

    Напишем таску для сборки верстки html

    Стоить вспомнить, что rigger - плагин, позволяющий использовать конструкцию для подключения файлов:

    //= template/footer.html

    В папке src/template/  создадим файлы header.html и footaer.html

    В папку header.html поместим

    В папку footer.html поместим

    а файл index.html отредактируем соответственно так:



    Запускаем сборку следующей командой

    gulp html:build

    После того, как она соберется, переходим в папку build и увидим там наш файл index.htm

    l

    Сборщик для JS

    Таска для сборки скриптов будет примерно такая

    Зададим структуру для main.js:

    Запустим сборку js:

    gulp js:build 


    И в папке build/js  можно увидеть скомпилированный и модифицированный файл.

    Сборщик для стилей

    Таска для сборки SCSS:

    Здесь все легко, но если вы заинтересовались настройками автопрификсера, то об этом можно почитать тут.

    Запустим нашу таску

    gulp style:build

    Теперь давайте определим таску с именем «build», которая будет запускать все:

    Отлеживаем изменения в файлах

    Чтобы не запускать каждый раз сборщик вручную, давайте попросим gulp при изменении какого-то файла  перезапускаться. 

    Понять это просто. Просто при изменениях какого-то файла происходит пересборка проекта.

    Попробуйте запустить в консоли:

    gulp watch

    Измените что-то в проекте и увидите, что произойдет.

    Очистка

    Если вы прикрепите большую библиотеку, потом запустите задачу js:build и потом решите, что она вам больше не нужна и удалите ее, то она все равно останется в папке проекта build. Так что было бы удобно периодически удалять ее содержимое. Создадим для этих потребностей простую таску

    Теперь, запуская команду с консоли

    gulp clean

    папка build будет удаляться.

    Напоследок

    Мы должны определить стандартную таску, которая запустит всю нашу сборку , используя только одну команду.

    gulp.task('default', ['build', 'webserver', 'watch']);

    Запустим в консоли

    gulp

    Вот и все. Теперь вы можете настроить проект для себя. Надеюсь, данная статья оказалась познавательной для вас.

    КОММЕНТАРИИ И ОБСУЖДЕНИЯ
    advertisement advertisement

    Покупай подпискус доступом ко всем курсам и сервисам

    Библиотека современных IT знаний в удобном формате

    Выбирай свой вариант подписки в зависимости от задач, стоящих перед тобой. Но если нужно пройти полное обучение с нуля до уровня специалиста, то лучше выбирать Базовый или Премиум. А для того чтобы изучить 2-3 новые технологии, или повторить знания, готовясь к собеседованию, подойдет Пакет Стартовый.

    Стартовый
    • Все видеокурсы на 3 месяца
    • Тестирование по 10 курсам
    • Проверка 5 домашних заданий
    • Консультация с тренером 30 мин
    59.99 $
    Оформить подписку
    Базовый
    • Все видеокурсы на 6 месяцев
    • Тестирование по 16 курсам
    • Проверка 10 домашних заданий
    • Консультация с тренером 60 мин
    89.99 $
    Оформить подписку
    Премиум
    • Все видеокурсы на 1 год
    • Тестирование по 24 курсам
    • Проверка 20 домашних заданий
    • Консультация с тренером 120 мин
    169.99 $
    Оформить подписку
    Notification success