Набор плагинов сборки данных для BEM сайтов.
Модуль сборки данных для bem сайтов.
Пакет устанавливается как обычная npm зависимость:
$ npm install --save gorshochek
Простой запуск сборки путем последовательного выполнения всех необходимых задач: пример.
Запуск с помощью gulp можно посмотреть здесь.
Модель данных описывается в JSON-файле, который должен содержать массив объектов, каждый из которых представляет собой совокупность мета-данных для определенной страницы сайта. Пример такой структуры приведен ниже:
[
{
"url": "/",
"site": "/",
"title": "БЭМ",
"content": "БЭМ прекрасен"
},
{
"url": "/methodology/",
"site": "/methodology/",
"title": "Методология",
"source": "./examples/bemjson/methodology.ru.bemjson.js",
"type": "bemjson.js"
},
...
]
Каждый объект в массиве страниц модели может иметь следующий набор полей:
Url страницы в браузере.
- Тип данных:
String
- Обязательное поле
- Должно быть уникальным
- Должно заканчиваться символом
/
Url раздела сайта для страницы
- Тип данных:
String
- Обязательное поле
- Должно заканчиваться символом
/
Заголовок страницы. Будет использован при построении меню, хлебных крошек, тега <title>
страницы и т. д.
- Тип данных:
String
- Обязательное поле
Флаг страницы, при указании которого в false страница будет исключена из сборки.
- Тип данных:
Boolean
- Значение по умолчанию:
true
Контент страницы. Может быть использован для страниц, у которых есть небольшой неизменяемый контент.
- Тип данных:
String
- Значение по умолчанию: нет
Ccылка на источник, с которого будет загружен контент для страницы. Может быть относительной (относительно рабочей директории проекта) ссылкой на файл локальной файловой системы или http-ресурс.
- Тип данных:
String
- Значение по умолчанию: нет
Примеры:
./examples/bemjson/methodology.ru.bemjson.js
https://github.com/bem-site/gorshochek/README.md
Тип данных страницы, например: bemjson.js
. Используется при шаблонизации страниц.
- Тип данных:
String
- Значение по умолчанию: нет
Имя BEM-бандла для сборки страниц.
- Тип данных:
String
- Значение по умолчанию:
index
Массив тегов для страницы, для которых могут быть построены соответствующие страницы.
- Тип данных:
String[]
- Значение по умолчанию:
[]
Задача сборки представляет собой функцию высшего порядка, т. е. возвращающую другую анонимную функцию, без аргументов реализующую логику задачи.
Любая задача сборки, работающая с моделью, должна принимать ее экземпляр в качестве первого аргумента. Кроме того, задача может включать в себя дополнительные опции, которые удобно передать в виде объекта вторым параметром. Для организации задач в виде цепочки промисов возвращаемая анонимная функция должна сама возвращать промис-объект.
Таким образом требования, описанные выше, позволяют записать код простейшей задачи, которая
выводит в консоль параметр name
, переданный ей в качестве опции:
module.exports = function(model, options = {}) {
return function() {
console.log('Hello ' + options.name);
return Promise.resolve(model);
}
}
Запуск тестов с вычислением покрытия кода тестами с помощью инструмента istanbul:
npm test
Проверка синтаксиса кода с помощью eslint и jscs
npm run lint
Особая благодарность за помощь в разработке:
- Гриненко Владимир (http://github.com/tadatuta)
- Харисов Виталий (https://github.com/vithar)
Разработчик Кузнецов Андрей Серргеевич @tormozz48 Вопросы и предложения присылать по адресу: [email protected]