• 29f307dcf1ccfbf1b8efde82684205c4a2e7c013

    29f307dcf1ccfbf1b8efde82684205c4a2e7c013

    exports.baseTechPath = BEM.require.resolve('./techs/css'); 
    ```
  • 9bd8a3cd349786d8935f37e1356bb5a5582dd197

    9bd8a3cd349786d8935f37e1356bb5a5582dd197

    Так же вы можете организовать контекстное наследование, использую переменную `baseTechName`. 
    В этом случае базовый класс будет выбран в зависимости от уровня переопределения, на котором 
    будет использован модуль технологии.
  • 0ecd816e72362759b0575163f21fafdfd7b84cbf

    0ecd816e72362759b0575163f21fafdfd7b84cbf

    ```js 
    exports.baseTechName = 'css'; 
    ```
  • 34b54a396e3f96b343f56847d5ad13158484d73c

    34b54a396e3f96b343f56847d5ad13158484d73c

    В этом примере новая технология будет расширять технологию `css`, заданную на уровне переопределения 
    в файле `.bem/level.js`.
  • 3aa428bd0192cc8ca2b0c898054208afbcb76059

    3aa428bd0192cc8ca2b0c898054208afbcb76059

    ##### Для продвинутых
  • ae4c8e87bdf554be1cc5895f893c4ed6fbbc3647

    ae4c8e87bdf554be1cc5895f893c4ed6fbbc3647

    Если вам нужен полный контроль, вы можете создать модуль, экспортирующий готовый класс технологии `Tech`.
  • d71301eca884b89862bfa2cf643adde981adfe46

    d71301eca884b89862bfa2cf643adde981adfe46

    ```js 
    var INHERIT = require('inherit'), 
        BaseTech = require('bem/lib/tech').Tech;
  • 3dc42c7fca2e9ede61d733f7e8044d3ab58358cb

    3dc42c7fca2e9ede61d733f7e8044d3ab58358cb

    exports.Tech = INHERIT(BaseTech, {
  • da404259dc6a895071be77ad73206dcb4f9059fe

    da404259dc6a895071be77ad73206dcb4f9059fe

        create: function(prefix, vars, force) { 
            // do some creation work 
        }
    ,
  • 3b25e3faa65e2ecc42ca6af002cd1449022a963f

    3b25e3faa65e2ecc42ca6af002cd1449022a963f

        build: function(prefixes, outputDir, outputName) { 
            // organize own build process 
        }
  • ae3b86b2540bf0b4f8392eb6cac92499e787eeb5

    ae3b86b2540bf0b4f8392eb6cac92499e787eeb5

    Если в качестве базовой технологии вы хотите использовать одну из существующих технологий, 
    написанных в простом стиле, воспользуйтесь функцией `getTechClass()` для получения класса 
    этой технологии. Мы рекомендуем всегда использовать `getTechClass()`, чтобы не зависеть 
    от реализации базовой технологии.
  • 065a059db8a32ec078c1ba2919306f5a364c2dc9

    065a059db8a32ec078c1ba2919306f5a364c2dc9

    ```js 
    var INHERIT = require('inherit'), 
        BEM = require('bem'), 
        BaseTech = BEM.getTechClass(require.resolve('path/to/tech/module'));
  • 9cb9c9f59e96e381dc61ac6e594b1903a412cb55

    9cb9c9f59e96e381dc61ac6e594b1903a412cb55

        // ваш код
  • c49e428eaad981c32f9dc0ddee99f7f6dc272713

    c49e428eaad981c32f9dc0ddee99f7f6dc272713

    ##### Примеры модулей технологий
  • 3a743cb8be0030f394f48f1a3785f6502df7a287

    3a743cb8be0030f394f48f1a3785f6502df7a287

     * [bem-tools/lib/techs/](https://github.com/bem/bem-tools/tree/nodejs/lib/techs) 
     * [bem-bl/blocks-common/i-bem/bem/techs/](https://github.com/bem/bem-bl/tree/master/blocks-common/i-bem/bem/techs)
  • bead77508a378ba0b2474daf9876d8994f135f57

    bead77508a378ba0b2474daf9876d8994f135f57

    ### Использование через API
  • 7c76dea77d09253b6ba64eff9efed02c3c08b667

    7c76dea77d09253b6ba64eff9efed02c3c08b667

    В версии 0.2.0 появилась возможность использовать команды `bem-tools` через API.
  • 34b3d3ce009f36190f2324dbe9bd058e90682c52

    34b3d3ce009f36190f2324dbe9bd058e90682c52

    Модуль `bem` экспортирует объект основной команды, у которого есть свойство `api`. 
    Использовать его можно так:
  • 980f52689df973c5a20977185c70567decc3827b

    980f52689df973c5a20977185c70567decc3827b

    ```js 
    var Q = require('q'), 
        BEM = require('bem').api,
  • 43f645b91a338d49372d8e698fef112e42222c59

    43f645b91a338d49372d8e698fef112e42222c59

        techs = ['css', 'js'], 
        blocks = ['b-block1', 'b-block2'];