Git Product home page Git Product logo

arbis's Introduction

Сборка Gulp для верстки

GitHub release GitHub issues GitHub forks Twitter

##Возможности сборки

  • Препроцессор SCSS
  • Автоматическая генерация WebP
  • Автоматическая генерация SVG Sprite
  • WebPack для работы с JS modules
  • Минификация билда для продакшн версии
  • Деплой проекта на GitHub Pages и GitLab Pages
  • Автоматическая подмена путей в продакшн версии
  • StyleLint и ES Lint
  • Создание БЭМ блоков командой в консоли

Содержание

Быстрый старт

  • Установить Node.JS
  • Склонировать репозиторий [email protected]:prikhodkin/gulp_prikhodkin.git
  • Перейти в папку со сборкой
  • Установить npm зависимости npm i
  • Запустить проект npm run dev
  • При необходимости изменить конфиг, создать файл user-config.js в директории gulp

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

gulp_prikhodkin                         | Корень проекта
├── gulp                                | Файлы для настроек галпа 
│   ├── task                            | Таски для галпа
│   └── user-config.js                  | Конфигурация проекта (переименовать в config.js)
├── src                                 | Исходные файлы
│   ├── blocks                          | БЭМ блоки
│   │   ├── block                       | БЭМ Блок
│   │   │   ├── block.html              | Разметка блока
│   │   │   └── block.scss              | Стили блока
│   │   └── general-blocks.scss         | Общий файл стилей, в который импортируются все стили общих блоков 
│   ├── fonts                           | Шрифты
│   ├── img                             | Изображения
│   │   ├── icons                       | Иконки   
│   │   │   └── svg                     | SVG файлы для спрайта           
│   │   └── favicons                    | Фавиконки
│   ├── js                              | JS файлы
│   ├── scss                            | Файлы стилей
│   │   ├── helpers                     | Помощники
│   │   │   ├── _global.scss            | Глобальные стили сайта
│   │   │   ├── _fonts.scss             | Подключение шрифтов
│   │   │   ├── _mixins.scss            | Примеси
│   │   │   ├── _normalize.scss         | Сброс стандартных стилей
│   │   │   ├── _libs.scss              | Стили от библиотек
│   │   │   └── _variables.scss         | Переменные
│   │   └── main.scss                   | Основной файл стилей, импортирует все остальные стиливые файлы
│   └── pages                           | Страницы проекта
│       └── index                       | Директория страницы
│           ├── index.html              | Разметка страницы
│           ├── index.scss              | Файл стилей страницы, в который импортируются нужные стили из блоков
│           └── index.js                | Js файл страницы, в который импортируются нужные js файлы из блоков
├── .bemrc.js                           | Конфигурация bem create
├── .editorconfig                       | Конфигурация редактора
├── .eslintrc.yml                       | Конфигурация ES Lint
├── .gitignore                          | Исключенные файлы из git
├── .gitlab-ci.yml                      | Конфигурация для GitLab Pages
├── .stylelintrc                        | Концигурация StyleLint
├── gulpfile.js                         | Конфигурация Gulp
├── webpack.config.js                   | Конфигурация WebPack
└── package.json                        | Список зависимостей 

Команды запуска

Режим разработки

npm run dev

Режим продакш.

Минифицирует css/ js/ img, так создает json manifest для css и js. Результат сборки папка dist

npm run build

Публикация на GitHub Pages

npm run ghp

Публикация на GitLab Pages

Для публикации на GitLab Pages необходимо сделать push в ветку pages.

git push origin pages

Копирование build сборки в произвольную директорию

Путь для директории редактируется в gulp/config.js

npm run deploy

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

npm run test

Автоматически исправляет ошибки линтера

npm run fix

Библиотеки

Если в проекте используются сторонние библиотеки, необходимо подключить файл vendor.js на страницу

Для добавление новой библиотеки, необходимо установить пакет с помощью команды

npm install pack-name --save

После установки пакета, необходимо импортировать в нужном месте

import var from "pack-name"

Библиотека успешно добавлена в проект.

Коллекция библиотек

  • jQuery - Библиотека jQuery;
  • Stimulus - Фреймворк Stimulus;
  • vh-check - Утилита для высоты экрана на мобильных устройствах;
  • WOW - Анимация появления элементов при скролле;
  • Slick - Слайдер;
  • hc-sticky - Библиотека для создания "липких" элементов;

Заметки

Создание БЭМ блока

В папке blocks создается папка my-block .
Структура:

my-block
├── my-block.html
├── my-block.scss
└── my-block.js
bem create my-block

Использование svg спрайта

Папка в которой хранятся svg иконки

img                             | Изображения
└── icons                       | Иконки   
    └── svg                     | SVG файлы для спрайта

Вызов спрайта

<svg class="svg">
 <use xlink:href="img/sprites/sprite.svg#icon"></use>
</svg> 

Подключение файлов

Подключение js модулей

import var from "%modules%/block-name/file-name.js"

Подключения html файлов

@@include('../../blocks/dir-name/file-name.html')

Подключение html файлов с передачей данных

@@include('../../blocks/dir-name/file-name.html', {
  "key": "value"
})
@@loop('../../blocks/dir-name/file-name.html', [
    { "key": "value" },
    { "key": "value" },
])

Шаблон подключаемого файла с данными

<section>
    <h1>@@key</h1>
</section>

Ошибки

  • При создании БЭМ блока ответ консоли: -bash: $: command not found

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

export PATH=./node_modules/.bin:$PATH

arbis's People

Contributors

chesnokovalexander 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.