bem/bem-tools
-
674a9d64ea0e3460bb8792bfe011ff8aa7e1dfa3
674a9d64ea0e3460bb8792bfe011ff8aa7e1dfa3
getBundlesLevels: function() {
return [
'pages-desktop',
'pages-touch',
'bundles/common'
];
} -
7258da0b2027cf7f4d1f6b2f0562f0621b0d46cb
7258da0b2027cf7f4d1f6b2f0562f0621b0d46cb
Для каждого бандла по умолчанию собираются следующие конечные файлы: -
1cfcff6553dacc4ec8dc495117bb67c3ccc25178
1cfcff6553dacc4ec8dc495117bb67c3ccc25178
* `.bemhtml.js`
* `.html`
* `.css`
* `.ie.css`
* `.js`
* `_*.css`
* `_*.ie.css`
* `_*.js` -
d9b1c67b8c6c8911c6bc122aec509152e439f809
d9b1c67b8c6c8911c6bc122aec509152e439f809
и промежуточные: -
307f416baf10cae7673ca117abc2304401bd126c
307f416baf10cae7673ca117abc2304401bd126c
* `.bemdecl.js`
* `.deps.js`
* `.deps.js.deps.js`
* `.bemhtml.js.meta.js`
* `.js.meta.js`
* `.css.meta.js`
* `.ie.css.meta.js` -
d0c0d50f912ef84e5d58cf6f89f24ebfff95043d
d0c0d50f912ef84e5d58cf6f89f24ebfff95043d
По умолчанию исходным файлом считается файл `.bemjson.js`. Если его нет на диске, исходным станет `.bemdecl.js`. Если его
тоже нет - `.deps.js`. В случаях, когда нет `.bemjson.js` статический html собран не будет. -
cc17c10ddcacba74d091a4b1a68ae84b1da4404a
cc17c10ddcacba74d091a4b1a68ae84b1da4404a
Чтобы изменить перечень собираемых файлов, добавьте в `.bem/make.js` следующий код: -
92c2313dad9674cdb9143fff899f374485c30f9a
92c2313dad9674cdb9143fff899f374485c30f9a
getTechs: function() {
return [
'bemdecl.js',
'deps.js',
'bemhtml.js',
'css',
'js',
'priv.js'
];
}
});
``` -
e651d465b178c25e2f846499cfd6622b5adab60a
e651d465b178c25e2f846499cfd6622b5adab60a
Если вы хотите дополнить стандартный набор своими: -
51c703937dd9b96095943b30a2e2cc965fe8fdea
51c703937dd9b96095943b30a2e2cc965fe8fdea
getTechs: function() {
return this.__base().concat(['priv.js', 'pub.js']);
}
});
``` -
f21e89c22a5bda9ae863bba486689829db493bd9
f21e89c22a5bda9ae863bba486689829db493bd9
`this.__base()` вызывает базовый метод, который вернет нам массив технологий по умолчанию. С помощью `concat()` мы добавляем
в него технологии `priv.js` и `pub.js` и возвращаем его. -
bd0802dd4a661cbd7d7b132b4181087937648b6f
bd0802dd4a661cbd7d7b132b4181087937648b6f
Рекомендуется возвращать список явно, т.е. переопределять `getTechs()` как в первом примере, чтобы избежать побочных
эффектов, если вдруг поменяется список технологий по умолчанию. -
1d0fc06b59bb7c4f22109f55f3473ea6fa490fa2
1d0fc06b59bb7c4f22109f55f3473ea6fa490fa2
**ВАЖНО:** Технологии в массиве должны идти в порядке зависимости друг от друга. То есть технология B, зависящая от
технологии A, должна быть в списке **ниже** A. Также в этом списке должны быть все технологии, в том числе исходный файл,
например `bemjson.js`. -
3d492a81761dbd5bc2651238852c6bd1410f1872
3d492a81761dbd5bc2651238852c6bd1410f1872
###### Сборка merged (раньше так же назывался common) бандла
Merged бандл — это бандл, который объединяет в себе декларации всех бандлов уровня. Соответственно по такой объединенной
декларации собираются и объединенные конечные файлы. Например, css будет включать в себе все стили, используемые всеми бандлами. -
6025d967a4bd750cc20ab4c86eba3ceaf4123305
6025d967a4bd750cc20ab4c86eba3ceaf4123305
Merged бандл может быть полезен, например, если вы хотите использовать общие файлы статики (js, css) для нескольких
страниц проекта. Или при использовании технологии priv.js держать шаблоны страниц в одном файле. -
17d672f6d716e3664d0fb9836b232feea3c6b368
17d672f6d716e3664d0fb9836b232feea3c6b368
Следующий код включит сборку merged бандла для всех уровней: -
5a1d192d2d23bedaf31df9af1b3421099dc1314e
5a1d192d2d23bedaf31df9af1b3421099dc1314e
```js
MAKE.decl('BundlesLevelNode', {
buildMergedBundle: function() {
return true;
}
});
``` -
c9f98f4cc42c94c5af5b6fcb7b2517e402d3993d
c9f98f4cc42c94c5af5b6fcb7b2517e402d3993d
Если merged бандл нужен только в выборочных уровнях, необходимо добавить условие (будем собирать merged только для уровня
`pages-desktop`): -
949901cc15c5b323c8a95d745d1814326380313f
949901cc15c5b323c8a95d745d1814326380313f
```js
var PATH = require('path'); -
9beb83d1a3ff4497bb635b051d1a9beb0496cb9e
9beb83d1a3ff4497bb635b051d1a9beb0496cb9e
MAKE.decl('BundlesLevelNode', {
buildMergedBundle: function() {
if (this.getLevelPath() === 'pages-desktop') return true;