bem/bem-tools
-
Режимом по умолчанию является development. Установка `YENV` в значение production переключит его соответственно.
-
Значения переменных окружения можно выставлять в `.bem/make.js`, например
-
```js
process.env.YENV = 'production';
``` -
### Файлы конфигурации
-
#### Уровень переопределения (`.bem/level.js`)
-
На уровне переопределения должен быть файл конфигурации `.bem/level.js`, который содержит в себе мета-информацию
об устройстве уровня, а именно: -
- правила маппинга БЭМ-сущностей в файловую систему
- технологии, определённые для уровня
- мета-информация для системы сборки -
При создании уровня командой `bem create level` файл `.bem/level.js` создаётся пустым, что означает, что уровень —
«стандартный». Поведение стандартного уровня описано в классе `Level` в файле
(lib/level.js)[https://github.com/bem/bem-tools/blob/master/lib/level.js]. -
Перекрыть поведение уроня просто. Файл `.bem/level.js` (как и практически любой файл конфигурации) является CommonJS
модулем. `bem-tools` при обнаружении такого файла создаёт класс-наследник стандартного класса `Level`, используя экспорт
этого модуля в качестве расширения класса (внутри используется модуль [inherit](https://github.com/dfilatov/node-inherit)). -
В примере ниже перекрывается метод `getTechs()`.
-
```js
exports.getTechs = function() { -
return {
'bemjson.js': ''
'css': 'path/to/my/css-tech-module.js'
} -
##### Наследование уровней
-
Чтобы не копировать код из одного конфига уровней в другой, вы можете выносить общие части в самостоятельные модули
и наследоваться от них. Таким образом можно выстаивать целые иерархии уровней. -
Для задания базового уровня нужно экспортировать из модуля свойство `baseLevelPath`, например
-
```js
exports.baseLevelPath = require.resolve('path/to/base/level.js');
``` -
Уровни-наследники также можно создавать командой
-
bem create level
<your-level-name>
--level path/to/base/level.js -
##### Правила маппинга БЭМ-сущностей в файловую систему
-
По умолчанию на уровне переопределения используется следующая схема маппинга (на примере технологии `css`):
No more segments to load.
Loading more segments…
© 2009-2024 WebTranslateIt Software S.L. All rights reserved.
Terms of Service
·
Privacy Policy
·
Security Policy