16

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

  • Upload
    yandex

  • View
    514

  • Download
    2

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

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

ENB

Высокая скорость сборки для больших проектов

Детальная настройка сборки

Гибкая система кэширования

3

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

История ENB

Ускорение сборки в Картах

Конфигурация для технологий

Ускорение bem-tools

4

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

Скорость

Разбиение крупных технологий на более мелкие

Переиспользование промежуточных данных

Кэширование неизменяемых данных

5

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

Асинхронность

Полная асинхронность

Использованы более быстрые библиотеки (vow вместо Q)

В субпроцессы выделены тяжелые технологии (bemhtml)

6

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

Настраиваемость

Настройки для технологий

Переиспользование технологий с разными настройками

Все этапы сборки выделены в технологии

7

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

Настраиваемость технологий

Исходные файлы

Результирующие файлы

Дополнительные параметры

8

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

Сборка страницы

9

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');

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

Разработка технологий

10

module.exports = require('../lib/build-flow').create() .name('js') .target('target', '?.js') .useFileList('js') .justJoinFilesWithComments() .createTech();

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

Разработка технологий

11

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();

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

Существующие технологииbemdecl-from-bemjson

bemdecl-from-deps-by-tech

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

css-includes

css-less

css-stylus-with-nib

css-stylus

css

deps-merge

deps-old

deps-provider

deps-subtract

deps

file-copy

file-merge

file-provider

files

html-from-bemjson-i18n

html-from-bemjson

i18n-keysets-xml

i18n-lang-js-chunks

i18n-lang-js

i18n-merge-keysets

js-bembundle-component-i18n

js-bembundle-component

js-bembundle-page-i18n

js-bembundle-page

js-chunks

js-expand-includes

js-i18n

js-includes

js-test

js

levels

node-js

priv-js-i18n-all

priv-js-i18n

priv-js

pub-js-i18n

symlink

vanilla-js

xsl-2lego

xsl-convert2xml

xsl-html5-i18n

xsl-html5

xsl

xslt

12

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

Модули для ENB

enb-bemhtml

enb-bemxjst

enb-modules

grunt-enb

13

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

Комьюнити

Подробная документация

Принято 25 пулл-реквестов

Пакеты enb-bemhtml, enb-bemxjst поддерживаются внешним разработчиком

http://github.com/enb-make/enb

14

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

Спасибо за внимание

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

16

[email protected]

@mdevilsmdevils

Марат ДулинТехнический лидергруппы интерфейсов геопоиска