ENB — сборщик
проектов на БЭМ
Марат Дулин
BEMup в рамках YaC 2013, Москва
ENB

Высокая скорость сборки для больших проектов
Детальная настройка сборки
Гибкая система кэширования

3
История ENB

Ускорение сборки в Картах
Конфигурация для технологий
Ускорение bem-tools

4
Скорость

Разбиение крупных технологий на более мелкие
Переиспользование промежуточных данных
Кэширование неизменяемых дан...
Асинхронность

Полная асинхронность
Использованы более быстрые библиотеки (vow вместо Q)
В субпроцессы выделены тяжелые те...
Настраиваемость

Настройки для технологий
Переиспользование технологий с разными настройками
Все этапы сборки выделены в т...
Настраиваемость технологий

Исходные файлы
Результирующие файлы
Дополнительные параметры

8
Сборка страницы
nodeConfig.addTechs([
[require('enb/techs/levels'), {levels: getLevels(config)}],
[require('enb/techs/file...
Разработка технологий

module.exports = require('../lib/build-flow').create()
.name('js')
.target('target', '?.js')
.useFi...
Разработка технологий
var Vow = require('vow');
var vowFs = require('vow-fs');
module.exports = require('enb/lib/build-flow...
Существующие технологии
bemdecl-from-bemjson

css-includes

html-from-bemjson

levels

bemdecl-from-deps-bytech

css-less
...
Модули для ENB
enb-bemhtml
enb-bemxjst
enb-modules
grunt-enb

13
Комьюнити
Подробная документация
Принято 25 пулл-реквестов
Пакеты enb-bemhtml, enb-bemxjst поддерживаются внешним
разработ...
Спасибо за внимание
Марат Дулин
Технический лидер
группы интерфейсов геопоиска
@mdevils
mdevils
mdevils@yandex-team.ru

16
Марат Дулин — ENB — сборщик проектов на БЭМ
Upcoming SlideShare
Loading in …5
×

Марат Дулин — ENB — сборщик проектов на БЭМ

1,006 views

Published on

В докладе — гибкая система кэширования, обмен промежуточными данными в процессе сборки, разбиение технологий на более мелкие, субпроцессы для технологий и многое другое.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,006
On SlideShare
0
From Embeds
0
Number of Embeds
104
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Марат Дулин — ENB — сборщик проектов на БЭМ

  1. 1. ENB — сборщик проектов на БЭМ Марат Дулин BEMup в рамках YaC 2013, Москва
  2. 2. ENB Высокая скорость сборки для больших проектов Детальная настройка сборки Гибкая система кэширования 3
  3. 3. История ENB Ускорение сборки в Картах Конфигурация для технологий Ускорение bem-tools 4
  4. 4. Скорость Разбиение крупных технологий на более мелкие Переиспользование промежуточных данных Кэширование неизменяемых данных 5
  5. 5. Асинхронность Полная асинхронность Использованы более быстрые библиотеки (vow вместо Q) В субпроцессы выделены тяжелые технологии (bemhtml) 6
  6. 6. Настраиваемость Настройки для технологий Переиспользование технологий с разными настройками Все этапы сборки выделены в технологии 7
  7. 7. Настраиваемость технологий Исходные файлы Результирующие файлы Дополнительные параметры 8
  8. 8. Сборка страницы nodeConfig.addTechs([ [require('enb/techs/levels'), {levels: getLevels(config)}], [require('enb/techs/file-provider'), {target: '?.bemdecl.js'}], require('enb/techs/files'), require('enb/techs/deps'), [require('enb/techs/js'), {target: 'hello.js'}], [require('enb/techs/css'), {target: 'world.css'}] ]); nodeConfig.addTargets('hello.js', 'world.css'); 9
  9. 9. Разработка технологий module.exports = require('../lib/build-flow').create() .name('js') .target('target', '?.js') .useFileList('js') .justJoinFilesWithComments() .createTech(); 10
  10. 10. Разработка технологий var Vow = require('vow'); var vowFs = require('vow-fs'); module.exports = require('enb/lib/build-flow').create() .name('js') .target('target', '?.js').useFileList('js') .builder(function(jsFiles) { var node = this.node; return Vow.all(jsFiles.map(function(file) { return vowFs.read(file.fullname, 'utf8').then(function(data) { var filename = node.relativePath(file.fullname); return '/* begin: ' + filename + ' */n' + data + 'n/* end: ' + filename + ' */'; }); })).then(function(contents) { return contents.join('n'); }); }).createTech(); 11
  11. 11. Существующие технологии bemdecl-from-bemjson css-includes html-from-bemjson levels bemdecl-from-deps-bytech css-less i18n-keysets-xml node-js css-stylus-with-nib i18n-lang-js-chunks priv-js-i18n-all css-stylus i18n-lang-js priv-js-i18n css i18n-merge-keysets priv-js deps-merge js-bembundle-componenti18n pub-js-i18n bemdecl-merge bemdecl-provider bemdecl-test borschik browser-js css-borschik-chunks css-chunks css-ie-includes css-ie css-ie6 css-ie7 css-ie8 css-ie9 deps-old deps-provider deps-subtract deps file-copy file-merge file-provider files html-from-bemjson-i18n js-bembundle-component js-bembundle-page-i18n js-bembundle-page js-chunks js-expand-includes js-i18n js-includes symlink vanilla-js xsl-2lego xsl-convert2xml xsl-html5-i18n xsl-html5 xsl xslt js-test js 12
  12. 12. Модули для ENB enb-bemhtml enb-bemxjst enb-modules grunt-enb 13
  13. 13. Комьюнити Подробная документация Принято 25 пулл-реквестов Пакеты enb-bemhtml, enb-bemxjst поддерживаются внешним разработчиком http://github.com/enb-make/enb 14
  14. 14. Спасибо за внимание
  15. 15. Марат Дулин Технический лидер группы интерфейсов геопоиска @mdevils mdevils mdevils@yandex-team.ru 16

×