bem/bem-tools
- 
3acd63d49d5d8693804c3a7a49f51f13cf4596543acd63d49d5d8693804c3a7a49f51f13cf459654 Способ заключается в том, что вы создаёте обычный CommonJS модуль, из
 которого экспортируете несколько функций, которые перекроют методы базового
 класса `Tech` из модуля [lib/tech.js](https://github.com/bem/bem-tools/blob/master/lib/tech.js).
- 
63a096811b44516dbd165135439d4d636336e64963a096811b44516dbd165135439d4d636336e649 ```js
 exports.getCreateResult = function(...) {
 // ваш код
 };
 ```
- 
2178b5c1846ee5d1d676328fa0aec7f7ee95d59b2178b5c1846ee5d1d676328fa0aec7f7ee95d59b Вы так же можете сгруппироать все методы в объекте `techMixin`. Это рекомендованный способ.
- 
d16386309a94c244f6e9de2bbd37b1daed803fded16386309a94c244f6e9de2bbd37b1daed803fde ```js
 exports.techMixin = {
- 
60bbeeb710dac2a19cef2be4f5c1ca8a88c013f960bbeeb710dac2a19cef2be4f5c1ca8a88c013f9 getCreateResult: function(...) {
 // ваш код
 }
- 
243c8b0a3eec97bc80a519d4a2a807d527ba5fbf243c8b0a3eec97bc80a519d4a2a807d527ba5fbf ##### Простой способ
- 
3437f9888282b7fc65c68b4e3b311d2705683fe63437f9888282b7fc65c68b4e3b311d2705683fe6 В простом способе к экспортируемым функциям добавляется переменная `baseTechPath`, в которой
 содержится абсолютный путь до расширяемого модуля технологии.
- 
0062be1cd42b0f36e7f609bafb19c1df26279a470062be1cd42b0f36e7f609bafb19c1df26279a47 ```js
 var BEM = require('bem');
- 
29f307dcf1ccfbf1b8efde82684205c4a2e7c01329f307dcf1ccfbf1b8efde82684205c4a2e7c013 exports.baseTechPath = BEM.require.resolve('./techs/css');
 ```
- 
9bd8a3cd349786d8935f37e1356bb5a5582dd1979bd8a3cd349786d8935f37e1356bb5a5582dd197 Так же вы можете организовать контекстное наследование, использую переменную `baseTechName`.
 В этом случае базовый класс будет выбран в зависимости от уровня переопределения, на котором
 будет использован модуль технологии.
- 
0ecd816e72362759b0575163f21fafdfd7b84cbf0ecd816e72362759b0575163f21fafdfd7b84cbf ```js
 exports.baseTechName = 'css';
 ```
- 
34b54a396e3f96b343f56847d5ad13158484d73c34b54a396e3f96b343f56847d5ad13158484d73c В этом примере новая технология будет расширять технологию `css`, заданную на уровне переопределения
 в файле `.bem/level.js`.
- 
3aa428bd0192cc8ca2b0c898054208afbcb760593aa428bd0192cc8ca2b0c898054208afbcb76059 ##### Для продвинутых
- 
ae4c8e87bdf554be1cc5895f893c4ed6fbbc3647ae4c8e87bdf554be1cc5895f893c4ed6fbbc3647 Если вам нужен полный контроль, вы можете создать модуль, экспортирующий готовый класс технологии `Tech`.
- 
d71301eca884b89862bfa2cf643adde981adfe46d71301eca884b89862bfa2cf643adde981adfe46 ```js
 var INHERIT = require('inherit'),
 BaseTech = require('bem/lib/tech').Tech;
- 
3dc42c7fca2e9ede61d733f7e8044d3ab58358cb3dc42c7fca2e9ede61d733f7e8044d3ab58358cb exports.Tech = INHERIT(BaseTech, {
- 
da404259dc6a895071be77ad73206dcb4f9059feda404259dc6a895071be77ad73206dcb4f9059fe create: function(prefix, vars, force) {
 // do some creation work
 },
- 
3b25e3faa65e2ecc42ca6af002cd1449022a963f3b25e3faa65e2ecc42ca6af002cd1449022a963f build: function(prefixes, outputDir, outputName) {
 // organize own build process
 }
- 
ae3b86b2540bf0b4f8392eb6cac92499e787eeb5ae3b86b2540bf0b4f8392eb6cac92499e787eeb5 Если в качестве базовой технологии вы хотите использовать одну из существующих технологий,
 написанных в простом стиле, воспользуйтесь функцией `getTechClass()` для получения класса
 этой технологии. Мы рекомендуем всегда использовать `getTechClass()`, чтобы не зависеть
 от реализации базовой технологии.
- 
065a059db8a32ec078c1ba2919306f5a364c2dc9065a059db8a32ec078c1ba2919306f5a364c2dc9 ```js
 var INHERIT = require('inherit'),
 BEM = require('bem'),
 BaseTech = BEM.getTechClass(require.resolve('path/to/tech/module'));