enb-markdown
Пакет предоставляет набор ENB-технологий для сборки Markdown-файлов, разложенных по методологии БЭМ, и конвертации их в HTML с использованием пакета markdown-bemjson.
Установка
$ npm install --save enb-markdown
Требования:
Node.js
версии6.0.0
и выше- базовые шаблоны для BEMHTML и BEMTREE, которые находятся в библиотеке bem-core или bem-bl
Быстрый старт
Сборка бандла с технологией Markdown
Предположим, документы разложены в формате Markdown с использованием БЭМ-наименования файлов.
articles/
└── article/
├── _part/
│ ├── article_part_first.markdown
│ └── article_part_second.markdown
└── article.markdown
Минимальная настройка сборки:
var MarkdownTech = FileProvideTech = bemTechs = ; module { config;};
Декларация в bemdecl.js
для сборки целевого документа в бандле, в том порядке в котором БЭМ-сущности задекларированы:
exportsblocks = "name": "article" "name": "article" "mods": "name": "part" "vals": "name": "first" "name": "second" ;
Сборка HTML из Markdown-технологии
Минимальная настройка сборки:
var FileProvideTech = bemTechs = bemtreeTech = bemhtmlTech = ; MarkdownTech = MarkdownToHtmlTech = ; module { config;};
Особенности работы пакета
Правила преобразования в HTML
Для преобразования Markdown в HTML используется модуль markdown-bemjson для промежуточной конвертации в BEMJSON.
Опция markdownBemjsonOptions
в технологии markdown-to-html
используется для передачи опций markdown-bemjson, в том числе и правил преобразования options.rules
.
В доступных свойствах правил преобразования есть возможность передать данные в шаблоны. Последним аргументом свойства передаётся объект с методами, которые передают данные по заданному пути в ctx
в области видимости root-блока:
setInRootCtx(path, value, [rewrite])
— добавляет свойство по заданному путиpath (Array|string)
— путь к свойствуvalue (*)
— значение[rewrite=true] (Boolean)
— нужно ли перезаписать, если свойство существует
pushToRootCtx(path, value)
— добавляет значение в массив по заданному путиpath (Array|string)
— путь к свойствуvalue (*)
— значение
Пример правила:
moduleexports = { if level === 1 rootCtx; return block: 'head' mods: level: level content: text ; };
Root-блок
По умолчанию page
, можно изменить опцией rootBlock
.
Расширение документа
Для именования Markdown-файлов по умолчанию используется расширение .markdown
,
чтоб не пересекаться с документами внешних библиотек, которые подключаются как уровни переопределения.
Для использования более привычного расширения .md
нужно настроить отдельную конфигурацию для сборки Markdown из отдельного уровня переопределения, который не будет пересекаться с уровнями блоков вёрстки.
Лицензия
MIT Лицензия