Основан на gulp-scss-starter с некоторыми изменениям. Данная версия сборки заточена под промежуточный этап верстки с прицелом на дальнейшую ее интеграцию в CMS или фреймворки, в связи с этим:
- изменена валидация стилей (значительно упрощена)
- добавлена поддержка vue2 (компиляция *.vue файлов)
- убрано большинство оптимизаций (webp, компиляция спрайтов, сжатие картинок, минификация css/js)
- именование классов по БЭМ
- используется БЭМ-структура
- используется препроцессор SCSS
- используется транспайлер Babel для поддержки современного JavaScript (ES6) в браузерах
- используется Webpack для сборки JavaScript-модулей
- используется проверка кода на ошибки перед коммитом
- установите NodeJS 16-ой версии и npm
- скачайте сборку с помощью Git:
git clone https://github.com/svn72/gulp-scss-starter.git
- установите
gulp
глобально:npm install -g gulp-cli
- установите
bem-tools-core
глобально:npm install -g bem-tools-core
- перейдите в скачанную папку со сборкой:
cd gulp-scss-starter
- скачайте необходимые зависимости:
npm i
- чтобы начать работу, введите команду:
npm run dev
(режим разработки) - чтобы собрать проект, введите команду
npm run build
(режим сборки)
Если вы всё сделали правильно, у вас должен открыться браузер с локальным сервером.
Режим сборки предполагает оптимизацию проекта: сжатие изображений, минифицирование CSS и JS-файлов для загрузки на сервер.
gulp-scss-starter
├── dist
├── gulp-tasks
├── src
│ ├── blocks
│ ├── fonts
│ ├── img
│ ├── js
│ ├── styles
│ ├── views
├── gulpfile.babel.js
├── webpack.config.js
├── package.json
├── .babelrc.js
├── .bemrc.js
├── .eslintrc.json
├── .stylelintrc
├── .stylelintignore
└── .gitignore
- Корень папки:
.babelrc.js
— настройки Babel.bemrc.js
— настройки БЭМ.eslintrc.json
— настройки ESLint.gitignore
– запрет на отслеживание файлов Git'ом.stylelintrc
— настройки Stylelint.stylelintignore
– запрет на отслеживание файлов Stylelint'омgulpfile.babel.js
— настройки Gulpwebpack.config.js
— настройки Webpackpackage.json
— список зависимостей
- Папка
src
- используется во время разработки:- БЭМ-блоки:
src/blocks
- шрифты:
src/fonts
- изображения:
src/img
- JS-файлы:
src/js
- SCSS-файлы:
src/styles
- HTML-файлы:
src/views
- БЭМ-блоки:
- Папка
dist
- папка, из которой запускается локальный сервер для разработки (при запускеnpm run dev
) - Папка
gulp-tasks
- папка с Gulp-тасками
npm run lint:styles
- проверить SCSS-файлы. Для VSCode необходимо установить плагин. Для WebStorm или PHPStorm необходимо включить Stylelint вLanguages & Frameworks - Style Sheets - Stylelint
(ошибки будут исправлены автоматически при сохранении файла)npm run lint:styles --fix
- исправить ошибки в SCSS-файлахnpm run lint:scripts
- проверить JS-файлыnpm run lint:scripts --fix
- исправить ошибки в JS-файлахnpm run dev
- запуск сервера для разработки проектаnpm run build
- собрать проект без запуска сервераnpm run build:views
- собрать HTML-файлыnpm run build:styles
- скомпилировать SCSS-файлыnpm run build:styles_blocks
- скомпилировать SCSS-файлы без объединенияnpm run build:scripts
- собрать JS-файлыnpm run build:images
- собрать изображенияnpm run build:fonts
- собрать шрифтыnpm run bem-m
- добавить БЭМ-блокnpm run bem-c
- добавить компонент
- каждый БЭМ-блок имеет свою папку внутри
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
Чтобы вручную не создавать соответствующие папку и файлы, достаточно в консоли прописать следующие команды:
npm run bem-m my-block
- для создания БЭМ-блока вsrc/block/modules
(для основных БЭМ-блоков), гдеmy-block
- имя БЭМ-блока;npm run bem-с my-component
- для создания компонента вsrc/blocks/components
(для компонентов), гдеmy-component
- имя компонента
- страницы проекта находятся в папке
src/views
- шрифты находятся в папке
src/fonts
- используйте форматы
.woff
и.woff2
- шрифты подключаются в файл
src/styles/base/_fonts.scss
- сконвертировать локальные шрифты можно с помощью данного сервиса
- используйте форматы
- изображения находятся в папке
src/img
- все сторонние библиотеки устанавливаются в папку
node_modules
- для их загрузки воспользуйтеcь командой
npm add package_name
- для подключения JS-файлов библиотек импортируйте их в самом начале JS-файла БЭМ-блока (то есть тот БЭМ-блок, который использует скрипт), например:
import $ from "jquery";
- для подключения стилевых файлов библиотек импортируйте их в файл
src/styles/vendor/_libs.scss
- JS-файлы и стилевые файлы библиотек самостоятельно изменять нельзя
- для их загрузки воспользуйтеcь командой
- по пути
src/js/import
создать папкуpages
- в папке
pages
создать js-файл для страницы, например,pageA.js
, и импортировать туда библиотеку, которая будет использоваться только на этой странице- аналогично проделать шаг для дополнительных страниц
- в файле
webpack.config.js
в точку входа добавить js-файлы страниц, пример:
entry: {
main: "./src/js/index.js",
pageA: "./src/js/import/pages/pageA.js",
pageB: "./src/js/import/pages/pageB.js"
}
- подключить скомпилированные js-файлы на необходимых страницах