- установите NodeJS lts (на момент создания сборщика v16.13.2)
- скачайте сборку в консоли с помощью Git:
git clone git@bitbucket.org:osminozhka/gulp-builder.git #имя_проекта
- перейдите в скачанную папку со сборкой:
cd #имя_проекта
- скачайте необходимые зависимости:
npm install
- чтобы начать работу, введите команду:
npm run dev
(режим разработки) - чтобы собрать проект, введите команду
npm run build
(режим сборки)
Если вы всё сделали правильно, у вас должен открыться браузер с локальным сервером.
gulp-html-starter
├── dist
├── src
│ ├── blocks
│ ├── files
│ ├── fonts
│ ├── img
│ ├── js
│ ├── scss
├── .env_example
├── package.json
├── gulpfile.js
└── .gitignore
- Корень папки:
.gitignore
– запрет на отслеживание файлов Git'ом.env_example
– стартовый шаблон для переменных средыgulpfile.js
— настройки Gulppackage.json
— список зависимостей
- Папка
src
- используется во время разработки:- БЭМ-блоки и компоненты:
src/blocks
- Остальные файлы:
src/files
- шрифты:
src/fonts
- изображения:
src/img
- JS-файлы:
src/js
- SCSS-файлы:
src/scss
- SVG иконки для генерации спрайта:
src/svgicons
- БЭМ-блоки и компоненты:
- Папка
dist
- папка, из которой запускается локальный сервер для разработки (при запускеnpm run dev
) - Папка
gulp
- папка с Gulp-тасками и настройками
npm run dev
- запуск сервера для разработки проектаnpm run build
- собрать проект с оптимизацией без запуска сервера
- В корне папки с проектом есть файл
.env.example
, для использования переменных среды нужно переименовать его в.env
.PORT
- переменная для переопределения порта для запуска локального сервера. Пример использования:PORT=3000
.NGROK_AUTHKEY
- переменная для ключа доступа NGROK
- каждый БЭМ-блок имеет свою папку внутри
src/blocks/modules
- папка одного БЭМ-блока содержит в себе один html-файл, один SCSS-файл и один JS-файл (если у блока используется скрипт)
- html-файл блока импортируется в файл
src/views/index.html
(или в необходимый файл страницы, откуда будет вызываться блок) - SCSS-файл блока импортируется в файл
src/blocks/modules/_modules.scss
- JS-файл блока импортируется в
src/js/import/modules.js
- html-файл блока импортируется в файл
Пример структуры папки с БЭМ-блоком:
blocks
├── modules
│ ├── header
│ │ ├── header.html
│ │ ├── header.js
│ │ ├── header.scss
- компоненты (например, иконки, кнопки) оформляются в html с помощью примесей
- каждый компонент имеет свою папку внутри
src/blocks/components
- папка одного компонента содержит в себе один html-файл, один SCSS-файл и один JS-файл (если у компонента используется скрипт)
- html-файл компонента импортируется в файл главной страницы
src/index.html
(или в необходимый файл страницы, откуда будет вызываться компонент) - SCSS-файл компонента импортируется в файл
src/blocks/components/_components.scss
- JS-файл компонента импортируется в файл
src/js/import/components.js
- html-файл компонента импортируется в файл главной страницы
- страницы проекта находятся в корне папки
src/
- главная страница:
src/views/index.html
- главная страница:
- шрифты находятся в папке
src/fonts
- шрифты автоматически подключаются в файл
src/styles/base/_fonts.scss
- шрифты форматов
{*.otf}
автоматически конвертируются в формат{*.ttf}
в папку с шрифтамиsrc/fonts
- шрифты форматов
{*.ttf}
автоматически конвертируются в формат{*.woff, *.woff2}
в папку с шрифтами в сборкеdist/fonts
- шрифты автоматически подключаются в файл
- изображения находятся в папке
src/img
- изображения автоматически конвертируются в формат
.webp
. - изображения подключенные как
<img src="@img/download.png" width="100" alt="">
автоматически превращаются в<picture><source srcset="img/download.webp" type="image/webp"><img src="img/download.png" width="100" alt=""></picture>
.
- изображения автоматически конвертируются в формат
- все сторонние библиотеки устанавливаются в папку
node_modules
- для их загрузки воспользуйтеcь командой
npm install package_name
- для подключения JS-файлов библиотек импортируйте их в самом начале JS-файла БЭМ-блока (то есть тот БЭМ-блок, который использует скрипт), например:
import $ from "jquery";
- для подключения стилевых файлов библиотек импортируйте их в файл
src/styles/vendor/_libs.scss
- JS-файлы и стилевые файлы библиотек самостоятельно изменять нельзя
- Установить расширение
Path Autocomplete
- Нажать
ctrl+shift+p
и набрать: - Анг:
Preferences: Open Settings (JSON)
Рус:Параметры: Открыть параметры (JSON)
- Добавить к настройкам:
"path-autocomplete.pathMappings": {
"@img": "${folder}/src/img",
"@js": "${folder}/dist/js",
"@scss": "${folder}/src/scss",
"@css": "${folder}/dist/css",
}
- Должно быть что то вроде:
{
// ВАШИ НАСТРОЙКИ,
// ВАШИ НАСТРОЙКИ,
// ВАШИ НАСТРОЙКИ,
// ВАШИ НАСТРОЙКИ,
// ВАШИ НАСТРОЙКИ,
"path-autocomplete.pathMappings": {
"@img": "${folder}/src/img",
"@js": "${folder}/dist/js",
"@scss": "${folder}/src/scss",
"@css": "${folder}/dist/css",
}
}
- Чтобы сделать всплывающее окно нужно:
- Кнопке добавить
data-modal="КАКОЙ_ТО_ИДЕНТИФИКАТОР"
- К обертке всплывающего окна добавить
data-modal-id="КАКОЙ_ТО_ИДЕНТИФИКАТОР"
- При клике на кнопку будет добавляться класс
isOpened
к обертке всплывающего окна - Изменить data атрибуты и класс можно в файле
src/js/app.js
modals: new Modals({
modalsSelector: "data-modal", // data атрибут для кнопки
modalsOpenerSelector: "data-modal-id", // data атрибут для всплывающего окна
openedClass: "isOpened" // класс для добавления
})