Commit 1e654d43 authored by Nikolay Gromov's avatar Nikolay Gromov

Написал обработку разметки и получение классов-блоков

parent dae7879a
# Стартовый проект с gulp ![Test Status](https://travis-ci.org/nicothin/NTH-start-project.svg?branch=master) [![devDependencies Status](https://david-dm.org/nicothin/NTH-start-project/dev-status.svg)](https://david-dm.org/nicothin/NTH-start-project?type=dev) [![dependencies Status](https://david-dm.org/nicothin/NTH-start-project/status.svg)](https://david-dm.org/nicothin/NTH-start-project) # Стартовый проект с gulp ![Test Status](https://travis-ci.org/nicothin/NTH-start-project.svg?branch=master) [![devDependencies Status](https://david-dm.org/nicothin/NTH-start-project/dev-status.svg)](https://david-dm.org/nicothin/NTH-start-project?type=dev) [![dependencies Status](https://david-dm.org/nicothin/NTH-start-project/status.svg)](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-файлов: файлы ДО, файлы блоков (если есть), файлы ПОСЛЕ.
- Собираем и обрабатываем JS.
- Формируем список картинок: дополнительные из конфига, картинки блоков. Копируем картинки.
- Копируем доп. файлы: дополнительные из конфига, доп. файлы блоков.
- Копируем шрифты.
- Копируем стилевые и js-файлы, указанные как копируемые в конфиге.
- Обновляем страницу
### Изменение любого файла разметки
- Из pug собирается html.
- Получившийся HTML анализируется, из атрибутов `class` формируется массив `blocksListNew`.
- Из `blocksListNew` исключаются игнорируемые блоки, упомянутые в массиве `config.ignoredBlocks`.
- Сравниваются `blocksListNew` и `blocksList`:
- Если отличий нет, просто обновляется браузер.
- Если отличия есть:
- `configOld = config`
-ПОВТОР Формируем актуальный конфиг `config`:
- Добавляем не касающиеся блоков разделы из `configOld`.
- Обходим `blocksList` и проверяем для каждого блока существование стилевого файла, JS-файла, папки картинок. Записываем данные, идентичные старому конфигу по структуре.
- Записываем актуальный конфиг в файл `config.json`.
- Формируем список стилевых файлов: файлы ДО, файлы блоков (если есть), файлы ПОСЛЕ.
- Сравниваем список стилевых файлов с содержимым диспетчера подключений. Если отличаются, перезаписываем ДП стилей.
- Компилируем стили.
- Формируем список JS-файлов: файлы ДО, файлы блоков (если есть), файлы ПОСЛЕ.
- Собираем и обрабатываем JS.
- Формируем список картинок: дополнительные из конфига, картинки блоков. Копируем картинки.
- Копируем доп. файлы: дополнительные из конфига, доп. файлы блоков.
- Копируем шрифты.
- Копируем стилевые и js-файлы, указанные как копируемые в конфиге.
- Обновляем страницу
### Изменение любого стилевого файла
- Компилируем стили.
- Обновляем CSS страницы.
### Добавление или удаление стилевого файла
- `configOld = config`
- Формируем актуальный конфиг `config`:
- Добавляем не касающиеся блоков разделы из `configOld`.
- Обходим `blocksList` и проверяем для каждого блока существование стилевого файла. Про js-файл и картинки не проверяем, берем существующие данные. Записываем данные, идентичные старому конфигу по структуре.
- Записываем актуальный конфиг в файл `config.json`.
- Формируем список стилевых файлов: файлы ДО, файлы блоков (если есть), файлы ПОСЛЕ.
- Перезаписываем ДП стилей.
- Компилируем стили.
- Обновляем CSS страницы.
### Изменение любого js-файла
### Изменение в папке, откуда собирается растровый спрайт
### Изменение в папке, откуда собирается векторный спрайт
### Изменение в папке добавочных картинок
### Изменение в папке добавочных файлов
### Изменение файла `config.json`
## СТАРОЕ
---
<table> <table>
<thead> <thead>
<tr> <tr>
......
let config =
{
"notGetBlocks": [
"blocks-demo.html",
],
"ignoredBlocks": [
"no-js",
],
"blocks": {
"page": {
"style": [
"src/blocks/page/page.scss",
],
"js": [],
"img": [],
"assets": [],
},
"page-header": {
"style": [
"src/blocks/page-header/page-header.scss",
],
"js": [],
"img": [],
"assets": [],
},
"logo": {
"style": [
"src/blocks/logo/logo.scss",
],
"js": [],
"img": [],
"assets": [],
},
"main-nav": {
"style": [
"src/blocks/main-nav/main-nav.scss",
],
"js": [
"src/blocks/main-nav/main-nav.js"
],
"img": [],
"assets": [],
},
"burger": {
"style": [
"src/blocks/burger/burger.scss",
],
"js": [
"src/blocks/burger/burger.js"
],
"img": [],
"assets": [],
},
"page-footer": {
"style": [
"src/blocks/page-footer/page-footer.scss",
],
"js": [],
"img": [],
"assets": [],
}
},
"addStyleBefore": [
"./src/scss/functions.scss",,
"./src/scss/variables.scss",,
"./src/scss/mixins.scss",
],
"addStyleAfter": [
"./src/scss/print.scss",
],
"addJsBefore": [],
"addJsAfter": [
"./src/js/global-script.js",
],
"addImages": [],
"addAssets": [],
"copiedCss": [],
"copiedJs": [],
"dir": {
"src": "./src/",
"build": "./build/",
"blocks": "./src/blocks/",
},
};
module.exports = config;
This diff is collapsed.
This diff is collapsed.
extends pug/layout.pug
block meta
title Главная
meta(name='description', content='')
//- block append head
//- link(rel='stylesheet', href='css/some.css')
block header
+page-header()
+logo('/')
span Логотип
+main-nav('10')
.some-new-class Class
.some-new-class__eee EEE!
.some-new-class.some-new-class--error Class
.some-new-class__eee EEE!
block content
p Содержимое. #[a(href='blocks-demo.html') Библиотека блоков].
block footer
+page-footer()
p «Подвал»
p Контактный телефон: #[a(href="tel:+70000000000") +7 000 000 00 00]
//- block page-bottom
//- script(src='js/some.js')
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment