bem/bem-tools
-
fc9a8dce3f207ea500438722a300af9263083022
fc9a8dce3f207ea500438722a300af9263083022
Чтобы сконфигурировать сборку своего проекта, необходимо переопределить поведение тех или иных узлов. Это делается в
конфигурационном файле `.bem/make.js` в корне проекта с помощью хелпера `MAKE.decl()`. Первым аргументом ему передается
название узла, который будет переопределен. Вторым - объект с переопределяющими методами. -
5c27929c0234de4532f6c79c6488eb69aea49f9c
5c27929c0234de4532f6c79c6488eb69aea49f9c
```js
MAKE.decl('BundleNode', { -
1d36e5f8b736d59520da7e92d0cb19688991502b
1d36e5f8b736d59520da7e92d0cb19688991502b
});
``` -
981d2d0aec79c64826618e324cc2e63b975cce99
981d2d0aec79c64826618e324cc2e63b975cce99
У узлов есть несколько основных методов, отвечающих за процесс сборки:
* `isValid()` - проверяет, есть ли необходимость в запуске сборки данного узла. Если артефакты сборки узла уже были получены ранее и узлы, от которых зависит данный, не пересобирались в текущей сборке - то будет считаться, что узел не нужно пересобирать. Иными словами, если после первой сборки вы поменяли один файл, то при последующей сборке будут пересобраны только зависящие от этого файла узлы. Для остальных isValid вернет true и они не будут пересобираться.
* `make()` - осуществляет непосредственно сборку узла.
* `run()` - точка входа в узел. В реализации по умолчанию выполняет метод `isValid()` и в случае если он возвращает `false`, запускает `make()`.
* `clean()` - удаляет артефакты сборки данного узла. -
ce5fe2905d682fa1914ca02ecb0869045ad42fce
ce5fe2905d682fa1914ca02ecb0869045ad42fce
##### Примеры конфигурационных файлов для типовых задач -
53bacef9ed6d32e3bfa789794a1754234da98d25
53bacef9ed6d32e3bfa789794a1754234da98d25
###### Сборка статического html, css, js, bemhtml шаблонов из bemjson для уровня страниц pages. Подключаются уровень переопределения блоков blocks, а так же blocks-common и blocks-desktop из bem-bl -
55db1067b197e69a251f41f280a52a0c87c18336
55db1067b197e69a251f41f280a52a0c87c18336
`pages/.bem/level.js`
```js
var extend = require('bem/lib/util').extend; -
6c5d0c27402ae2189ad606839b6c8f71cec213ce
6c5d0c27402ae2189ad606839b6c8f71cec213ce
exports.getTechs = function() { -
0130b4c94d66fb460a729dcecc16158ae701ad6e
0130b4c94d66fb460a729dcecc16158ae701ad6e
return {
'bemjson.js': '',
'bemdecl.js': 'bemdecl.js',
'deps.js': 'deps.js',
'js': 'js-i',
'css': 'css',
'bemhtml.js': '../../bem-bl/blocks-common/i-bem/bem/techs/bemhtml.js',
'html': '../../bem-bl/blocks-common/i-bem/bem/techs/html.js'
}; -
479fc7c06b96a0acf32bee5c77ee38370a6414c9
479fc7c06b96a0acf32bee5c77ee38370a6414c9
}; -
f4c45e7ff05559188b0312113867aafa4cbe1171
f4c45e7ff05559188b0312113867aafa4cbe1171
`.bem/make.js`
```js
MAKE.decl('Arch', { -
3b6d920981dd595a3b394e989b0390cc8f96aed6
3b6d920981dd595a3b394e989b0390cc8f96aed6
getLibraries: function() { -
3a7575e93c8d2c8200417bca26decc1a54a16c98
3a7575e93c8d2c8200417bca26decc1a54a16c98
return {
'bem-bl': {
type: 'git',
url: 'git://github.com/bem/bem-bl.git'
}
}; -
e266bf187351d458abacf0d6374d1c6659d82428
e266bf187351d458abacf0d6374d1c6659d82428
} -
fe84c857229782f7dcc3bde466c5c32b4221072d
fe84c857229782f7dcc3bde466c5c32b4221072d
}); -
29423885b94e05fe91ae03c38a668c8be92f6af9
29423885b94e05fe91ae03c38a668c8be92f6af9
MAKE.decl('BundleNode', { -
83ea55db04b36d4db0b70796108cbcbb9eff2131
83ea55db04b36d4db0b70796108cbcbb9eff2131
getTechs: function() { -
eecea92b1e1963e9c972f8dd4dcc6e822b8a5bbc
eecea92b1e1963e9c972f8dd4dcc6e822b8a5bbc
return [
'bemjson.js',
'bemdecl.js',
'deps.js',
'bemhtml.js',
'css',
'js',
'html'
];
} -
b1fc1eaa2c20fc1fd7c9ff03c862a10e36788f38
b1fc1eaa2c20fc1fd7c9ff03c862a10e36788f38
###### Сборка css, js, bemhtml шаблонов из файлов декларации (bemdecl) для уровня страниц pages. Подключаются уровень переопределения блоков blocks, а также blocks-common и blocks-desktop из bem-bl -
b0556ad12a024369605bedde03eb80a583faefdd
b0556ad12a024369605bedde03eb80a583faefdd
return {
'bemdecl.js': 'bemdecl.js',
'deps.js': 'deps.js',
'js': 'js-i',
'css': 'css',
'bemhtml.js': '../../bem-bl/blocks-common/i-bem/bem/techs/bemhtml.js'
};