Git Product home page Git Product logo

gulp_prikhodkin'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

gulp_prikhodkin's People

Contributors

dependabot[bot] avatar ibadin avatar prikhodkin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

gulp_prikhodkin's Issues

Не работает деплой на gitlab-pages

Задача падает с ошибкой:

gulp build --production
SyntaxError: Invalid regular expression: /^.*?\((?<label>.*?)[,)]/: Invalid group
    at Object.<anonymous> (/builds/pxlpro/ramada/node_modules/ow/dist/source/index.js:1:26679)
    at r (/builds/pxlpro/ramada/node_modules/ow/dist/source/index.js:1:186)
    at Object.module.exports.r (/builds/pxlpro/ramada/node_modules/ow/dist/source/index.js:1:11962)
    at r (/builds/pxlpro/ramada/node_modules/ow/dist/source/index.js:1:186)
    at module.exports.Object.defineProperty.value (/builds/pxlpro/ramada/node_modules/ow/dist/source/index.js:1:985)
    at Object.<anonymous> (/builds/pxlpro/ramada/node_modules/ow/dist/source/index.js:1:994)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ build: `gulp build --production`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the @ build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-04-07T09_11_12_259Z-debug.log

Добавить поддержку async/await

Сейчас если попытаться использовать async/await выдается ошибка в консоли, ставил такие плагины
@babel/plugin-transform-runtime в dev-dependencies и @babel/runtime в dependencies с ними работало

Создание файла настроек

Как насчет создания отдельного файла настроек, например, вынести в него все пути?

Можно назвать его config.js, в git его не класть, а положить в git, config.example.js.

Когда кто-то склонирует репозиторий ему нужно скопировать файл config.example.js и переименовать в config.js, затем заполнить настройки.

Если сможешь при сборке, если файла config.js нет, в консоли выводить сообщение, чтобы его создали.

Предлагаю зафиксировать версию node и npm

Тут написано, что писать в package.json
А тут на полурусском обсуждения всего этого дела https://qastack.ru/programming/29349684/how-can-i-specify-the-required-node-js-version-in-package-json

Думаю, что это было бы хорошо для стабильности и понимания, почему что-то не устанавливается

Что скажешь?

Я могу pr отправить, но скажи мне версии

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.