bem/bem-tools
-
Если вам нужен полный контроль, вы можете создать модуль, экспортирующий готовый класс технологии `Tech`.
Если вам нужен полный контроль, вы можете создать модуль, экспортирующий готовый класс технологии `Tech`.
-
```js var INHERIT = require('inherit'), BaseTech = require('bem/lib/tech').Tech;
```js
var INHERIT = require('inherit'),
BaseTech = require('bem/lib/tech').Tech; -
exports.Tech = INHERIT(BaseTech, {
exports.Tech = INHERIT(BaseTech, {
-
create: function(prefix, vars, force) { // do some creation work },
create: function(prefix, vars, force) {
// do some creation work
}, -
build: function(prefixes, outputDir, outputName) { // organize own build process }
build: function(prefixes, outputDir, outputName) {
// organize own build process
} -
Если в качестве базовой технологии вы хотите использовать одну из существующих технологий, написанных в простом стиле, воспользуйтесь функцией `getTechClass()` для получения класса этой технологии. Мы рекомендуем всегда использовать `getTechClass()`, чтобы не зависеть от реализации базовой технологии.
Если в качестве базовой технологии вы хотите использовать одну из существующих технологий,
написанных в простом стиле, воспользуйтесь функцией `getTechClass()` для получения класса
этой технологии. Мы рекомендуем всегда использовать `getTechClass()`, чтобы не зависеть
от реализации базовой технологии. -
```js var INHERIT = require('inherit'), BEM = require('bem'), BaseTech = BEM.getTechClass(require.resolve('path/to/tech/module'));
```js
var INHERIT = require('inherit'),
BEM = require('bem'),
BaseTech = BEM.getTechClass(require.resolve('path/to/tech/module')); -
// ваш код
// ваш код
-
##### Примеры модулей технологий
##### Примеры модулей технологий
-
* [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)
* [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) -
### Использование через API
### Использование через API
-
В версии 0.2.0 появилась возможность использовать команды `bem-tools` через API.
В версии 0.2.0 появилась возможность использовать команды `bem-tools` через API.
-
Модуль `bem` экспортирует объект основной команды, у которого есть свойство `api`. Использовать его можно так:
Модуль `bem` экспортирует объект основной команды, у которого есть свойство `api`.
Использовать его можно так: -
```js var Q = require('q'), BEM = require('bem').api,
```js
var Q = require('q'),
BEM = require('bem').api, -
techs = ['css', 'js'], blocks = ['b-block1', 'b-block2'];
techs = ['css', 'js'],
blocks = ['b-block1', 'b-block2']; -
Q.when(BEM.create.block({ forceTech: techs }, { names: blocks }), function() { console.log('Create blocks: %s', blocks.join(', ')); }); ```
Q.when(BEM.create.block({ forceTech: techs }, { names: blocks }), function() {
console.log('Create blocks: %s', blocks.join(', '));
});
``` -
Как видно из примера, можно обращаться ко всем командам `bem-tools`, в том числе вложенным.
Как видно из примера, можно обращаться ко всем командам `bem-tools`, в том числе вложенным.
-
Команды принимают два аргумента:
Команды принимают два аргумента:
-
* **Object** `opts` опции команды * **Object** `args` аргументы команды
* **Object** `opts` опции команды
* **Object** `args` аргументы команды -
Возвращают объект типа `Q.promise`.
Возвращают объект типа `Q.promise`.