# Стартовый проект с gulp  [](https://david-dm.org/nicothin/NTH-start-project?type=dev) [](https://david-dm.org/nicothin/NTH-start-project)
## НОВОЕ (как должно работать)
### Полная сборка
- Создаются переменные:
-`blocksList = []` — массив классов-Блоков, которые будут получены из html.
-`configOld = require('./config.json')` — конфиг, который уже есть.
-`config = {}` — актуальный конфиг.
- Из pug собирается html.
- Получившийся HTML анализируется, из атрибутов `class` формируется массив `blocksList`.
- Из `blocksList` исключаются игнорируемые блоки, упомянутые в массиве `configOld.ignoredBlocks`.
- Формируем актуальный конфиг `config`:
- Добавляем не касающиеся блоков разделы из `configOld`.
- Обходим `blocksList` и проверяем для каждого блока существование стилевого файла, JS-файла, папки картинок. Записываем данные, идентичные старому конфигу по структуре.
- Записываем актуальный конфиг в файл `config.json`.
- Формируем список картинок: дополнительные из конфига, картинки блоков. Копируем картинки.
- Копируем доп. файлы: дополнительные из конфига, доп. файлы блоков.
- Копируем шрифты.
- Копируем стилевые и js-файлы, указанные как копируемые в конфиге.
- Обновляем страницу
### Изменение любого файла разметки
- Из pug собирается html.
- Получившийся HTML анализируется, из атрибутов `class` формируется массив `blocksListNew`.
- Из `blocksListNew` исключаются игнорируемые блоки, упомянутые в массиве `config.ignoredBlocks`.
- Сравниваются `blocksListNew` и `blocksList`:
- Если отличий нет, просто обновляется браузер.
- Если отличия есть:
-`configOld = config`
-ПОВТОР Формируем актуальный конфиг `config`:
- Добавляем не касающиеся блоков разделы из `configOld`.
- Обходим `blocksList` и проверяем для каждого блока существование стилевого файла, JS-файла, папки картинок. Записываем данные, идентичные старому конфигу по структуре.
- Записываем актуальный конфиг в файл `config.json`.
- Формируем список картинок: дополнительные из конфига, картинки блоков. Копируем картинки.
- Копируем доп. файлы: дополнительные из конфига, доп. файлы блоков.
- Копируем шрифты.
- Копируем стилевые и js-файлы, указанные как копируемые в конфиге.
- Обновляем страницу
### Изменение любого стилевого файла
- Компилируем стили.
- Обновляем CSS страницы.
### Добавление или удаление стилевого файла
-`configOld = config`
- Формируем актуальный конфиг `config`:
- Добавляем не касающиеся блоков разделы из `configOld`.
- Обходим `blocksList` и проверяем для каждого блока существование стилевого файла. Про js-файл и картинки не проверяем, берем существующие данные. Записываем данные, идентичные старому конфигу по структуре.
- Записываем актуальный конфиг в файл `config.json`.
letstyleFileMsg='/*!*\n * ВНИМАНИЕ! Этот файл генерируется автоматически.\n * Не пишите сюда ничего вручную, все такие правки будут потеряны при следующей компиляции.\n * Правки без возможности компиляции ДОЛЬШЕ И ДОРОЖЕ в 2-3 раза.\n * Нужны дополнительные стили? Создайте новый css-файл и подключите его к странице.\n * Читайте ./README.md для понимания.\n */\n\n';
letstyleFileMsg='/*!*\n * ВНИМАНИЕ! Этот файл генерируется автоматически.\n * Не пишите сюда ничего вручную, все такие правки будут потеряны при следующей компиляции.\n * Правки без возможности компиляции ДОЛЬШЕ И ДОРОЖЕ в 2-3 раза.\n * Нужны дополнительные стили? Создайте новый css-файл и подключите его к странице.\n * Читайте ./README.md для понимания.\n */\n\n';
// Формирование и запись диспетчера подключений (style.scss), который компилируется в style.min.css