Commit a9d8db04 authored by Nikolay Gromov's avatar Nikolay Gromov

readme & block info

parent 6ba2a942
...@@ -15,7 +15,45 @@ ...@@ -15,7 +15,45 @@
- Есть глобальные файлы: css, js, шрифты, картинки, less-файлы (переменные, глобальная стилизация...). - Есть глобальные файлы: css, js, шрифты, картинки, less-файлы (переменные, глобальная стилизация...).
- Есть диспетчер подключений `/src/less/style.less`. Если в нем импортирован less-файл какого-либо блока, этот блок считается используемым (обрабатывается его js и доп. файлы). - Есть диспетчер подключений `/src/less/style.less`. Если в нем импортирован less-файл какого-либо блока, этот блок считается используемым (обрабатывается его js и доп. файлы).
Каждый блок — как минимум, папка и less-файл. Максимум возможностей — см. файлы внутри `/src/blocks/demo-block`.
### Блоки
Каждый блок лежит в `/src/blocks/` в своей папке. Каждый блок — как минимум, папка и одноимённый less-файл.
Возможное содержимое блока:
```bash
block-name/ # Папка блока
img/ # Изображения, используемые блоком
demo-block.less # Главный стилевой файл блока
demo-block--mod.less # Отдельный файл модификатора блока (если объемный и нужен не на всех проектах)
demo-block.js # Главный js-файл блока
demo-block--mod.js # js-файл для отдельного модификатора блока
demo-block.html # Варианты разметки (только как документация блока или как вставляемый фрагмент)
demo-block.css # Добавочный css (копируется как отдельный файл в `build/css`)
readme.md # Какое-то пояснение
```
## Подключение блоков
Если в диспетчере подключений (`/src/less/style.less`):
```
@import "../blocks/demo-block/demo-block.less";
```
То указанный файл будет взят в компиляцию стилей, а так же:
- в обработку будет взят js-файл блока: `src/blocks/demo-block/demo-block.js` (если существует и не пустой)
- в обработку будет взят css-файл блока: `src/blocks/demo-block/demo-block.css` (если существует и не пустой)
- в обработку будут добавлены все картинки блока: `src/blocks/demo-block/img/*.{jpg,jpeg,gif,png,svg}`
```
@import "../blocks/demo-block/demo-block.less";
@import "../blocks/demo-block/demo-block--mod.less";
```
......
...@@ -219,10 +219,11 @@ function getComponentsFiles() { ...@@ -219,10 +219,11 @@ function getComponentsFiles() {
if(/^(\s*)@import/.test(item)) return true; if(/^(\s*)@import/.test(item)) return true;
else return false; else return false;
}); });
console.log(fileSystem);
// Обойдём массив и запишем его части в объект результирующей переменной // Обойдём массив и запишем его части в объект результирующей переменной
fileSystem.forEach(function(item, i) { fileSystem.forEach(function(item, i) {
// Попробуем вычленить компонент из строки импорта // Попробуем вычленить компонент из строки импорта
let componentData = /\/components\/(.+?)(\/)(.+?)(?=.(less|css))/g.exec(item); let componentData = /\/blocks\/(.+?)(\/)(.+?)(?=.(less|css))/g.exec(item);
// Если это компонент и получилось извлечь имя файла // Если это компонент и получилось извлечь имя файла
if (componentData !== null && componentData[3]) { if (componentData !== null && componentData[3]) {
// Название компонента (название папки) // Название компонента (название папки)
......
// Главный стилизационный файл блока
// Если этот файл не импортирован в диспетчере подключений, блок на проекте, видимо, не используется.
.demo-block {
display: block;
}
Демонстрационный блок.
...@@ -20,5 +20,5 @@ ...@@ -20,5 +20,5 @@
@import "global_grid.less"; @import "global_grid.less";
@import (less) "../blocks/demo-block/demo-block.less"; @import (less) "../blocks/demo-block/demo-block.less";
@import "../blocks/demo-block/demo-block--mod.less"; // @import "../blocks/demo-block/demo-block--mod.less";
@import "../blocks/temp-block/temp-block.less"; // @import "../blocks/temp-block/temp-block.less";
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