Home

Awesome

enb-bevis Build Status

Предоставляет технологии для сборки проектов на базе BEViS.

Сборка

Сборка обычного BEViS-проекта выглядит так:

.enb/make.js:

    // ...
    config.node('pages/index', function (nodeConfig) {
        var browserSupport = [
            'IE >= 9',
            'Safari >= 5',
            'Chrome >= 33',
            'Opera >= 12.16',
            'Firefox >= 28'
        ];

        nodeConfig.addTechs([
            // Зависимости
            require('enb-bevis/techs/sources'),
            [require('enb-bevis/techs/deps'), {sourceDeps: 'page'}], // начинаем сборку с блока page
            require('enb-bevis/techs/files'),

            // Локализация
            [require('enb-y-i18n/techs/y-i18n-lang-js'), {lang: '{lang}'}],

            // Сборка JS
            require('enb-bt/techs/bt-client-module'),
            [require('enb-bevis/techs/js'), {lang: '{lang}', target: '?.source.{lang}.js'}],
            [require('enb-autopolyfiller/techs/autopolyfiller'), {
                source: '?.source.{lang}.js',
                target: '?.{lang}.js',
                browsers: browserSupport
            }],

            // Сборка CSS
            [require('enb-stylus/techs/css-stylus-with-autoprefixer'), {
                browsers: browserSupport,
                variables: {
                    ie: false
                }
            }],
            [require('enb-stylus/techs/css-stylus-with-autoprefixer'), {
                browsers: ['ie 9'],
                target: '?.ie.css',
                variables: {
                    ie: 9
                }
            }],

            // Сборка HTML
            require('enb-bt/techs/bt-server'),
            [require('enb-bt/techs/html-from-btjson'), {lang: '{lang}'}]
        ]);

        nodeConfig.mode('development', function (nodeConfig) {
            nodeConfig.addTechs([
                [require('enb/techs/file-copy'), {source: '?.css', target: '_?.css'}],
                [require('enb/techs/file-copy'), {source: '?.ie.css', target: '_?.ie.css'}],
                [require('enb/techs/file-copy'), {source: '?.{lang}.js', target: '_?.{lang}.js'}]
            ]);
        });

        nodeConfig.mode('production', function (nodeConfig) {
            nodeConfig.addTechs([
                [require('enb-borschik/techs/borschik'), {source: '?.css', target: '_?.css', freeze: true}],
                [require('enb-borschik/techs/borschik'), {source: '?.ie.css', target: '_?.ie.css', freeze: true}],
                [require('enb-borschik/techs/borschik'), {source: '?.{lang}.js', target: '_?.{lang}.js'}]
            ]);
        });

        nodeConfig.addTargets([
            '_?.{lang}.js',
            '_?.css',
            '_?.ie.css',
            '?.{lang}.html'
        ]);
    });
    // ...

package.json:

//...
"enb": {
  "dependencies": ["islets"], // зависимость от islets
  "sources": [
    "blocks" // директории для блоков проекта
  ]
}
//...

sources

Собирает информацию о директориях с исходным кодом проекта, предоставляет ?.sources.

Опции

Пример

nodeConfig.addTech(require('enb-bevis/techs/sources'));

deps

Раскрывает зависимости.

Опции

Пример

Обычное использование:

nodeConfig.addTech(require('enb-bevis/techs/deps'));

Сборка специфического deps:

nodeConfig.addTech([require('enb-bevis/techs/deps'), {
  sourceDepsFile: 'search.deps.yaml',
  target: 'search.dest-deps.js'
}]);

files

Собирает список исходных файлов для сборки на основе deps и sources, предоставляет ?.files и ?.dirs. Используется многими технологиями, которые объединяют множество файлов из различных исходных директорий в один.

Опции

Пример

nodeConfig.addTech(require('enb-bevis/techs/files'));

js

Собирает {lang}.js-файл.

Опции

Пример

Обычное использование:

nodeConfig.addTech(require('enb-bevis/techs/js'), {lang: '{lang}'});

Использование с автополифиллером:

nodeConfig.addTechs([
    [require('enb-bevis/techs/js'), {target: '?.source.{lang}.js', lang: '{lang}'}],
    [require('enb-autopolyfiller/techs/autopolyfiller'), {
        source: '?.source.{lang}.js',
        target: '?.{lang}.js',
        browsers: ['IE >= 9', 'Safari >= 5', 'Chrome >= 33', 'Opera >= 12.16', 'Firefox >= 28']
    }]
]);

source-deps-from-btjson

Формирует deps.yaml на основе ?.btjson.js.

Опции

Пример

nodeConfig.addTech(require('enb-bevis/techs/source-deps-from-btjson'));

source-deps-test

Формирует deps.yaml на основе деклараций тестов.

Опции

Пример

nodeConfig.addTech(require('enb-bevis/techs/source-deps-test'));

js-test

Формирует test.js на основе деклараций тестов.

Опции

Пример

nodeConfig.addTech(require('enb-bevis/techs/js-test'));