GithubHelp home page GithubHelp logo

staking-ui's Introduction

Front-end/Вёрстка сайта. Gulp сборщик. Pug + Sass/SCSS.

Спасибо что выбрали работу с нашей командой!
Данным описанием мы постараемся донести всю необходимую информацию по работе с нашей вёрсткой. Расскажем о существующей структуре, как с ней работать, как без труда скомпилировать самостоятельно.

Сборщик необходим для автоматизации задач в повседневной front-end разработке. Стили компилируются из Sass/SCSS, HTML код из Pug. Данные препроцессоры позволяют существенно ускорить разработку, а также упростить дальнейшую поддержку. Автоматически сжимаются файлы, оптимизируются картинки, JS код можно писать на последнем ECMAScript. При каждом сохранении файла в редакторе, браузер автоматически перезагружает страницу.

Общая структура

  • html — собранная, оптимизированная и полностью готовая к использованию вёрстка;
  • sources — исходные файлы проекта, сам сборщик, конфиги и прочее;
  • README.md — данный readme.

Скорее всего вам потребуется только содержимое html. Однако мы рекомендуем организовать работу таким образом, чтобы вручную ничего не вносилось, не правилось в данной папке. Т.к. в случае дальнейших доработок с нашей стороны, вам может потребоваться повторно делать все изменения в собранной вёрстке либо вручную переносить обновления в свой код. Постарайтесь автоматизировать процесс, либо документировать все необходимые изменения, чтобы при получении обновлённой html вы могли без труда обновить код у себя.

Приветствуется работа с sources. После изменений вы можете передать её обратно и мы спокойно продолжим работу. Обмен также удобно организовать через Git.

Как работать с исходниками?

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

Что включает в себя сборка?

  • browser-sync - живая перезагрузка веб-страницы при внесении изменений в файлы вашего проекта;
  • gulp-autoprefixer — автоматически расставляет префиксы в CSS в соответствии с сервисом Can I Use;
  • gulp-babel - использование ECMAScript с Babel;
  • gulp-uglify — минификация JS-файлов;
  • gulp-pug — компиляция Pug в HTML;
  • gulp-sass — компиляция Sass/SCSS в CSS;
  • gulp-clean-css — минификация CSS-файлов;
  • gulp-sourcemaps - карта стилей;
  • gulp-concat - объединение файлов;
  • gulp-add-src — добавление файлов для объединения;
  • gulp-imagemin — сжатие изображений PNG, JPG, GIF и SVG;
  • imagemin-pngquant — дополнение к gulp-imagemin для работы с PNG-изображениями;
  • imagemin-jpeg-recompress — дополнение к gulp-imagemin для работы с JPG-изображениями;
  • gulp-webp — создание и оптимизация изображений в формате WebP;
  • gulp-favicons — генератор фавиконок для вашего проекта;
  • gulp-svg-sprite — создание SVG-спрайтов;
  • gulp-replace - замена строк в исходных файлах;
  • gulp-newer — дополнительный плагин к gulp-imagemin, позволяет сжимать только новые изображения;
  • gulp-plumber — оповещения в командной строке (например, ошибки в Sass/SCSS);
  • gulp-debug — отладка в терминале;
  • gulp-watch — отслеживание изменений в ваших файлах проекта;
  • gulp-clean — удаление файлов и папок.

Как подготовиться?

дополнительно для Windows может понадобиться...

  • Git for Windows;
  • в PowerShell, запущенной от имени адмиинистратора:
npm install --global windows-build-tools
Set-ExecutionPolicy -ExecutionPolicy Unrestricted

дополнительно для Linux может понадобиться...

  • на примере Ubuntu 18.04+:
sudo apt install -y build-essential attr autoconf libjpeg-dev libpng-dev libtiff-dev libgif-dev

  • скачайте вёрстку как zip и распакуйте или клонируйте с гита (возможно, вы уже сделали это, если читаете данный документ);
  • перейдите в консоли в папку с исходниками:
cd sources
  • введите команду, которая скачает необходимые компоненты для корректной работы сборщика:
yarn

По завершению должно быть сообщение вида:

➤ YN0000: └ Completed in XXs
➤ YN0000: Done in XXm

или

➤ YN0000: └ Completed in XXs
➤ YN0000: Done with warnings in XXm

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

Как собрать?

Как вы уже знаете, проект собирается в папку html рядом с sources.

У нас открыт терминал, рабочая директория — sources
Запускаем:

yarn run gulp

У вас должен открыться браузер с локальным сервером и работающим browser-sync. Сборка прошла успешно, вёрстка в папке html полностью обновлена из текущих исходников.

Одновременно запущен мониторинг на следующие директории:

  • sources/src/pug/**/*.pug
  • sources/src/sass/**/*.{scss,sass}
  • sources/src/fonts/**/*
  • sources/src/images/**/* — все картинки проходят автоматическое сжатие
  • sources/src/images/favicons/* — из одной картинки генерируется необходимый набор фавиконок
  • sources/src/images/skip-optimization/**/* — здесь картинки минуют оптимизацию
  • sources/src/images/sprite-svg/*.svg — здесь svg собираются в один спрайт
  • sources/src/js/**/*.js — из js файлов собирается один main.min.js
  • sources/src/html_direct_copying/**/* — статичные файлы/папки, копируются прямиком в html

Для останавки мониторинга и локального сервера нажмите Ctrl + C в терминале.

Команды (таски) сборщика

Зачастую, для готового проекта требуется изменение только отдельных элементов (стилей, изображений, скриптов, html), не запуская сборку целиком по новой. В сборщике доступны следующие команды обновления:
yarn run gulp pug — html кода
yarn run gulp styles — стилей
yarn run gulp styles_unmin — стили будут без минификации
yarn run gulp scripts — скриптов
yarn run gulp scripts_unmin — скрипты без минификации*
yarn run gulp favicons — favicon
yarn run gulp images — изображений
yarn run gulp sprite — svg-спрайтов (после чего обязательно обновление стилей, см.выше)
yarn run gulp html_direct_copying — прямое копирование всего из sources/src/html_direct_copying в папку html

Копирование вновь добавленных библиотек:
yarn run gulp libs (после чего обязательно обновление скриптов, см.выше)

Команды сборки всего проекта, но без запуска мониторинга:
yarn run gulp build
yarn run gulp build_unmin — сборка без минификации*

Запуск только мониторинга:
yarn run gulp watch
yarn run gulp watch_unmin — без минификации*

* — обратите внимание на необходимость подключения js библиотек по отдельности в sources/src/pug/base/_layout.pug.

Sass vs SCSS

Сборщик поддерживает оба формата. Единственное условие — один .sass или .scss файл должен быть написан либо на чистом sass синтаксисе, либо scss. При этом разные файлы, которые вы имортируете, могут быть по разному и написаны (.sass или .scss соответственно).

Оптимизация изображений

Сборщик проводит автоматическое сжатие изображений, приоритет отдан максимальному визуальному качеству, без явных артефактов на любых дисплеях. Учитывая это, Google PageSpeed или другие аналогичные инструменты анализа сжатия изображений, могут сообщать о необходимости ещё сжать изображения — решать вам, что важнее. Изменить степень сжатия можно соответствующими параметрами в sources/gulp/tasks/images.js и перезапустить сборку gulp.

JPG: оптимизация настроена и отлично работает, главное — использовать JPG с качеством 100% (без какого-либо первоначального сжатия).

PNG: оптимизация настроена и работает хорошо. В некоторых случаях TinyPNG будет лучше (по качеству и/или степени сжатия), но в целом результат близкий. PNG также сохранять оригинальный (PNG24), без сжатия и/или каких-либо оптимизаций.

SVG: оптимизация настроена и работает отлично. Однако сам по себе формат svg очень сложный, он может включать внутри в том числе и растровую графику(!), анимации, поэтому не исключена потеря/искажение svg на выходе (в таком случае воспользуйтесь советом ниже). Тем не менее, при тестировании, каких-либо проблем с данным оптимизатором не выявлено.

В сборке присутствует папка sources/src/images/skip-optimization/ — все файлы из неё копируются без какого-либо вмешательства сразу в html/images/. Сделано на случай, если вдруг какой-то из оптимизаторов сработал плохо для того или иного изображения (оптимизируем вручную в таком случае). Внимание: сохраняя файл в sources/src/images/skip-optimization/ убедитесь, что нет файла с таким же именем в основной папке sources/src/images/.

Изображения в формате WebP

В сборщик встроена возможность автоматического создания и оптимизации формата WebP. Для этого используем папку sources/src/images/webp/ — все изображения (любого формата) из неё автоматически конвертируются с оптимизацией в формат WebP и сохраняются в основной поток html/images/. Качество конвертации — 85. Достаточно для большинства случаев, но если нужен меньший вес или, наоборот, лучшее качество, то данный параметр можно изменить в sources/gulp/tasks/images.js и перезапустить gulp.

Одни и те же изображения, с теми же именами, можно одновременно сохранять в sources/src/images/webp/ и в sources/src/images/. На выходе все будут в одной папке, но со своими расширениями.

Иконочный шрифт? Больше не используем!

Вместо него — svg спрайты. Шрифт использовали ранее для максимальной кроссбраузерности, сейчас это не актуально. Подробное сравнение здесь.

Bower или подключение плагинов (в том числе таких как jQuery, slick и др.)

Раньше для автоматического скачивания библиотек, плагинов был популярен Bower, сейчас практически все поддерживают добавление через NPM или Yarn.

Например, вам нужен jQuery (вероятно, уже используется в вёрстке), вводим команду: yarn add jquery.

Либа скачается в "недра" .yarn, а также будет прописана зависимость в sources/package.json, секция dependencies. Когда зависимость уже прописана — данные команды не нужны, все автоматически скачается при развертывании проекта (yarn). Для удаления: yarn remove jquery. Также можно вручную почистить sources/package.json и запустить yarn. Примечание: удаленные таким образом либы автоматически не удаляются из sources/src/libs. Всё лишнее чистим там вручную.

Далее запускаем: yarn run gulp libs (или полную сборку снова yarn run gulp) — либы целиком скопируются в sources/src/libs. Там будут в том числе исходные файлы, документация. В вёрстке обычно используются только собранные минифицированные дистрибутивы, чаще всего они в папке dist.

Путь к библиотекам прописывается в sources/src/js/_libs_concat.js. При сборке все JS сливаются в один файл html/js/main.js он и подключен в pug sources/src/pug/base/_layout.pug.

Вопросы, замечания, предложения?

Пишите нам!

staking-ui's People

Contributors

multijump avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.