项目作者: denisraymer

项目描述 :
News site layout using GULP, BEM, BABEL, WEBPACK, SCSS, SMART-GRID
高级语言: HTML
项目地址: git://github.com/denisraymer/top-news-israel.git
创建时间: 2020-04-22T19:14:09Z
项目社区:https://github.com/denisraymer/top-news-israel

开源协议:MIT License

下载


Правила именования коммитов

📦 NEW
  • Использовать, при добавлении чего-то совершенно нового
👌 IMPROVE
  • Использовать, при улучшении/улучшении части кода, рефакторинга и т.д
🐛 FIX
  • Использовать, при исправлении ошибки
📖 DOC
  • Использовать при изменении документации как readme.md, или даже встроенные документы
🚀 RELEASE
  • Использовать, при выпуске новой версии. Version 2.0.0
🤖 TEST
  • Использовать, если что-то связано с тестированием.

Особенности

  • именование классов по БЭМ
  • используется БЭМ-структура
  • используется препроцессор SCSS
  • используется транспайлер Babel для поддержки современного JavaScript (ES6) в браузерах
  • используется Webpack для сборки JavaScript-модулей
  • используется CSS-сетка smart-grid на основе Bootstrap для быстрой адаптивной вёрстки
  • используется жёсткий кодгайд
  • используется проверка кода на ошибки перед коммитом

Установка

  • установите NodeJS (если требуется) и Yarn
  • скачайте сборку с помощью Git: git clone https://github.com/andreyalexeich/gulp-scss-starter.git
  • установите gulp глобально: yarn global add gulp-cli
  • установите bem-tools-core глобально: yarn global add bem-tools-core
  • перейдите в скачанную папку со сборкой: cd gulp-scss-starter
  • скачайте необходимые зависимости: yarn
  • чтобы начать работу, введите команду: yarn run dev (режим разработки)
  • чтобы собрать проект, введите команду yarn run build (режим сборки)

Если вы всё сделали правильно, у вас должен открыться браузер с локальным сервером. Режим сборки предполагает оптимизацию проекта: сжатие изображений, минифицирование CSS и JS-файлов для загрузки на сервер.

Файловая структура

  1. gulp-scss-starter
  2. ├── dist
  3. ├── gulp-tasks
  4. ├── src
  5. ├── blocks
  6. ├── fonts
  7. ├── img
  8. ├── js
  9. ├── styles
  10. ├── views
  11. └── .htaccess
  12. ├── gulpfile.babel.js
  13. ├── webpack.config.js
  14. ├── package.json
  15. ├── .babelrc.js
  16. ├── .bemrc.js
  17. ├── .eslintrc.json
  18. ├── .stylelintrc
  19. ├── .stylelintignore
  20. └── .gitignore
  • Корень папки:
    • .babelrc.js — настройки Babel
    • .bemrc.js — настройки БЭМ
    • .eslintrc.json — настройки ESLint
    • .gitignore – запрет на отслеживание файлов Git’ом
    • .stylelintrc — настройки Stylelint
    • .stylelintignore – запрет на отслеживание файлов Stylelint’ом
    • gulpfile.babel.js — настройки Gulp
    • webpack.config.js — настройки Webpack
    • package.json — список зависимостей
  • Папка src - используется во время разработки:
    • БЭМ-блоки: src/blocks
    • шрифты: src/fonts
    • изображения: src/img
    • JS-файлы: src/js
    • страницы сайта: src/views/pages
    • SCSS-файлы: src/styles
    • HTML-файлы: src/views
    • конфигурационный файл веб-сервера Apache с настройками gzip (сжатие без потерь): src/.htaccess
  • Папка dist - папка, из которой запускается локальный сервер для разработки (при запуске yarn run dev)
  • Папка gulp-tasks - папка с Gulp-тасками

Команды

  • yarn run lint:styles - проверить SCSS-файлы. Для VSCode необходимо установить плагин. Для WebStorm
    или PHPStorm необходимо включить Stylelint в Languages & Frameworks - Style Sheets - Stylelint (ошибки будут исправлены автоматически при сохранении файла)
  • yarn run lint:styles --fix - исправить ошибки в SCSS-файлах
  • yarn run lint:scripts - проверить JS-файлы
  • yarn run lint:scripts --fix - исправить ошибки в JS-файлах
  • yarn run dev - запуск сервера для разработки проекта
  • yarn run build - собрать проект с оптимизацией без запуска сервера
  • yarn run build:views - собрать HTML-файлы
  • yarn run build:styles - скомпилировать SCSS-файлы
  • yarn run build:scripts - собрать JS-файлы
  • yarn run build:images - собрать изображения
  • yarn run build:webp - сконвертировать изображения в формат .webp
  • yarn run build:sprites- собрать спрайты
  • yarn run build:fonts - собрать шрифты
  • yarn run build:favicons - собрать фавиконки
  • yarn run build:gzip - собрать конфигурацию Apache

Рекомендации по использованию

Компонентный подход к разработке сайтов

  • каждый БЭМ-блок имеет свою папку внутри src/blocks/modules
  • папка одного БЭМ-блока содержит в себе один HTML-файл, один SCSS-файл и один JS-файл (если у блока используется скрипт)
    • HTML-файл блока импортируется в файл src/views/index.html (или в необходимый файл страницы, откуда будет вызываться блок)
    • SCSS-файл блока импортируется в файл src/blocks/modules/_modules.scss
    • JS-файл блока импортируется в src/js/import/modules.js

Пример структуры папки с БЭМ-блоком:

  1. blocks
  2. ├── modules
  3. ├──header
  4. ├── header.html
  5. ├── header.js
  6. ├── header.scss

Чтобы вручную не создавать соответствующие папку и файлы, достаточно в консоли прописать команду bem create my-block - для создания папки БЭМ-блока, где my-block - имя БЭМ-блока

Страницы проекта

  • страницы проекта находятся в папке src/views/pages
    • главная страница: src/views/index.html

Шрифты

  • шрифты находятся в папке src/fonts
    • используйте форматы .woff и .woff2
    • шрифты подключаются в файл src/styles/base/_fonts.scss
    • сконвертировать локальные шрифты можно с помощью данного сервиса

Изображения

  • изображения находятся в папке src/img
    • изображение для генерации фавиконок должно находиться в папке src/img/favicon и иметь размер не менее 1024px x 1024px
    • изображения автоматически конвертируются в формат .webp. Подробная информация по использованию @vk_it-webp">тут.

Сторонние библиотеки

  • все сторонние библиотеки устанавливаются в папку node_modules
    • для их загрузки воспользуйтеcь командой yarn add package_name
    • для подключения JS-файлов библиотек импортируйте их в самом начале JS-файла БЭМ-блока (то есть тот БЭМ-блок, который использует скрипт), например:
      1. import $ from "jquery";
    • для подключения стилевых файлов библиотек импортируйте их в файл src/styles/vendor/_libs.scss
    • JS-файлы и стилевые файлы библиотек самостоятельно изменять нельзя

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

  • по пути src/js/import создать папку pages
  • в папке pages создать js-файл для страницы, например, pageA.js, и импортировать туда библиотеку, которая будет использоваться только на этой странице
    • аналогично проделать шаг для дополнительных страниц
  • в файле webpack.config.js в точку входа добавить js-файлы страниц, пример:
    1. entry: {
    2. main: "./src/js/index.js",
    3. pageA: "./src/js/import/pages/pageA.js",
    4. pageB: "./src/js/import/pages/pageB.js"
    5. }
  • подключить скомпилированные js-файлы на необходимых страницах

CSS-сетка smart-grid

В сборщик включена CSS-сетка smart-grid от Дмитрия Лаврика. Она позволяет избавиться от
лишних классов в разметке за счёт использования примесей в SCSS и ускоряет адаптивную вёрстку. Конфигурация уже настроена в соответствии с сеткой Bootstrap. Пример использования:

SCSS

  1. .items{
  2. @include row-flex();
  3. @include md(justify-content, center);
  4. .item{
  5. @include col();
  6. @include size(3);
  7. @include size-md(5);
  8. @include size-xs(10);
  9. }
  10. }

Результат

  1. .items {
  2. display: flex;
  3. flex-wrap: wrap;
  4. margin-left: -15px;
  5. margin-right: -15px;
  6. }
  7. .items .item {
  8. box-sizing: border-box;
  9. margin-left: 15px;
  10. margin-right: 15px;
  11. word-wrap: break-word;
  12. width: calc(100% / 12 * 3 - 30px);
  13. }
  14. @media screen and (max-width: 992px) {
  15. .items {
  16. justify-content: center;
  17. }
  18. .items .item {
  19. width: calc(100% / 12 * 5 - 30px);
  20. }
  21. }
  22. @media screen and (max-width: 576px) {
  23. .items .item {
  24. width: calc(100% / 12 * 10 - 30px);
  25. }
  26. }