используеться Gulp 5 версии
- Скачайте и установите Node.js версии
18.20.5
или выше. - Создайте новый проект.
- Клонируйте репозиторий (
git clone <this repo>
) или скачайте архив и распакуйте его вручную. - В корне проекта выполните команду
npm i
для установки зависимостей.
gulp
— запустить проект в режиме разработчика.gulp --build
— собрать сборку в режиме production.gulp --prev
— просмотреть результаты в режиме production.gulp zip
— создать zip-файл проекта.gulp ghpages
— создаст вам github pages. Более докладно тут
.
├─ app # Главная папка для работы
│ ├── blocks # HTML файлы
│ ├── fonts # Шрифты
│ ├── images # Изображения
│ │ └── sprite # SVG-файлы для спрайтов
│ ├── js # Скрипты
│ │ ├── components # JS-компоненты
│ │ └── libs # Библиотеки
│ ├── pug
│ │ ├── components # Pug-компоненты
│ │ └── pages # Страницы
│ ├── resources # Разные файлы (PHP, favicon, видео)
│ └── scss # Стили
│ ├── base # Базовые стили
│ ├── components # SCSS-компоненты
│ ├── libs # Библиотеки
│ └── mixins # Миксины
│
├── .editorconfig # Настройки форматирования кода
├── .eslintrc.json # Настройки ESLint
├── .htmlhintrc # Настройки HTMLHint
├── .pug-lintrc.json # Линтер для Pug
├── .stylelintrc.json # Настройки Stylelint
├── gulpfile.js # Конфигурация Gulp
├── package.json # Настройки и зависимости проекта
├── readme.txt # Документация сборки(сокращенный вид)
└── README.md # Документация сборки
- HTML
- PUG
- CSS
- JS
- SVG
- Инные ресурсы
- Изображения
- Шрифты
- Возможности
- Github Pages
- Local Tunnel
- Изменения
-
Проверка html на БЭМ методологию.
-
Благодаря плагину gulp-file-include можно разделять на html-файлы, которые хранятся в папке blocks
Для вставки html-частей в главный файл используйте
@include('./blocks/filename.html')
В других html файлах так же можно использовать include, просто замените путь на правильный
-
При режиме production вы получите сжатый(минифцированный) и очищенный от комментариев html-код. Если вам не нужен минифцированный код, вы можете в
gulpfile.js
найти функцию html и там раскомментировать нужный блок кода -
Используется htmlhint для проверки корректности написания html-кода
-
Используется валидация w3c для соответствия html-кода стандартам
- Возможность работать с препроцессором pug. Все исходные файлы должны располагаться исключительно в папке pug иначе компиляция в хтмл код не будет происходить
- Для использования Pug необходимо в файле
config.json
присвоить markupType значение pug - Используется gulp-pug-linter, для правильного написания кода
- В режиме production вы получите сжатый(минифицированный) код. Чтобы получить код без минификации следуйте указаниям, в функции pug в файле
gulpfile.js
- В сборке используеться scss препроцессор
- Все файлы с папки scss подключать в файл
main.scss
- Для подключения файлов используйте директиву
@use
,@forward
- Если нужно подключить сторонние css-файлы (библиотеки) — положите их в папку libs. Затем так же подключите в main.scss
- В режиме production вы получите сжатый(минифцированный) и очищенный от коментариев css-код
- Используеться stylelint для правильного порядка записи свойств. Чтобы stylelint начал работать в settings.json нужно прописать такое свойство
"stylelint.validate": ["css", "less", "postcss", "scss"]
. Так же скачать плагин stylelint
- В сборке используеться webpack
- Js код можно разделить на отдельные файлы, расположенные в папке components.
Подключение файлов осуществляется с помощью импорта ES6 модулей.
- Если нужно подключить сторонние библиотеки — положите их в папку libs. Затем так же подключите в main.js. По умолчанию уже есть некоторые.
- Проверка js кода на наличие ошибок с помощью Eslint. Для того чтобы Eslint работал, скачайте плагин
ESLint
и в settings.json пропишите"eslint.enable": true, "eslint.codeActionsOnSave.mode": "problems",
- Все изображения, кроме ico, необходимо поместить в папку
images
. - В режиме production изображения будут сжаты и конвертированы в форматы avif и webp. Подключить их можно с помощью тега
picture
(который) автоматически подключиться вместо тегов img, если будет расширение svg, то не будет конвертирован в тег picture
- Если вам не нужны SVG-спрайты, просто помещайте файлы в папку
images
или в другие созданные вами папки (кромеsprite
). Если же спрайты необходимы, разместите их в папкеsprite
. Такие атрибуты как fill, stroke, style будут автоматически удаляться при svg-спрайтах
- Для других ресурсов таких как
php, video, ico, webp, avif и прочие положите их в папку resources.
- В папку
fonts
помещайте шрифты в любом формате, кроме woff, так как они не будут конвертированы. Файлы шрифтов должны иметь названия с тире, например:"Roboto-Medium"
или"Roboto-BlackItalic"
, чтобы автоподключение работало корректно. - Файл
_fonts.scss
в папке scss будет создан автоматически при подключении шрифтов. Если вы добавили новый шрифт, его нужно подключить вручную в этом файле с помощьюinclude
. Либо вы можете удалить этот файл и перезапустить сборку — в этом случае шрифты подключатся автоматически.
- Для корректного отображения текста на странице был подключен плагин типограф, которые автоматически добавит неразрывные пробелы и иные символы, чтобы текст везде отображался по всем правилам
- Чтобы упростить написание путей в VS Code, можно настроить плагин
Path Autocomplete
(скачав его). Добавьте в файл настроек JSON следующий код:
"path-autocomplete.pathMappings": {
"#img": "${folder}/app/images"
}
Теперь, используя #img, вы сможете автоматически получать подсказки для путей к изображениям. Например: #img/icon/arrow.svg
В версии 1.0.3 добавлена добавлена возможность автоматически создать Github Pages из вашего проекта(по сути, бесплатный хост для вашего сайта) Чтобы разместить проект - нужно:
- Открыть консоль git в папке с вашим проектом
- Создать пустой репозиторий на Github
- Зайти обратно в консоль и прописать следующие команды по очереди
git init
git add .
git commit -m 'upload'
git branch -M main
git remote add origin https://github.com/{Ваш username}/{Название репозитория который вы создали}.git
git push -u origin main
git commit -m 'upload'
- название коммита может быть любым
git remote add origin https://github.com/{Ваш username}/{Название репозитория который вы создали}.git
- замените {Ваш_пользователь} и {Название_репозитория} на нужные значения из вашего репозитория. Ссылку можно взять в репозитории
или
4. После того, как ваш проект будет загружен, пропишите в консоли
npm run deploy
. Эта команда создаст ветку gh-pages и автоматически запустит. Чтобы скопировать эту ссылку, нужно перейти в ваш репозиторий. Потом settings ⇒ pages и там вы найдете ссылку. Пример https://<username>.github.io/<repo-name>/
. Не забудьте дописать эту ссылку на ваш хтмл файл https://<username>.github.io/<repo-name>/index.html
5. Для вашей кастомной настройке вы можете перейти в gulpfile.js
, найти функцию ghpages и настроить все под себя. Чтобы вызвать эту функцию, пропишите в консоль gulp ghpages
С версии 1.0.5 добавлена возможность автоматически создать сервер, который доступен каждому пользователю. Чтобы сервер включялся автоматически в config.json
поставить enabled на true
- Изменил зависимости на более новые версии (теперь node js нужен версии 18.20.5 и выше)
- Добавлен плагин
w3c-html-validator
, который автоматически проверяет ваш html код на валидность и выводить ошибки в консоль - Теперь возможен импорт css-файлов в js-файлы (ранее импортировались только js-файлы). Пример
import 'simplebar/dist/simplebar.css'
- В dependencies добавлены новые библиотеки в том числе и мой плагин
darkmodal
для модальных окон, который уже подключен вapp/js/libs/modal.js
. Для завершения настройки его нужно подключить main.js. Для получения подробной информации о использовании → ссылочка - Добавлены и улучшены различные функции и миксины в scss. Теперь необходимо в
app/scss/base/_vars.scss
указать максимальную ширину и минимальную ширину сайта. Так же переходим на rem еденицы измерения для лучшей доступности (в процессе)
- Добавлена поддержка компиляции pug файлов в хтмл.
- Теперь вы сами можете выбрать html файлы или pug. Просто установите нужное значение в начале
gulpfile.js
. По умолчанию html - Автоматическая загрузка вашего проекта на Github Pages
- Обновлен конфигурационный файл eslintrc.json
- Полный переход на использование единиц измерения rem для улучшения доступности
- Оптимизированы и удалены миксины
- Добавлен файл для линтера pug файлов
- Сделан
config.json
в котором будут лежать основыне настройки проекта - Добавлен Ngrok для создания сервера, который доступен каждому пользователю
- Добавлены и улучшены миксины
- Ngrok был заменен на Local Tunnel по одной простой причине: в Ngrok действовали ограничения на количество запросов, и чтобы их снять, требовалась оплата
- Небольшие улучшения
Если вы нашли баг, ошибку, недоработку или просто дать идеи для сборки — пишите мне в 💬 Telegram!