bem/bem-tools
-
и промежуточные:
и промежуточные:
-
* `.bemdecl.js` * `.deps.js` * `.deps.js.deps.js` * `.bemhtml.js.meta.js` * `.js.meta.js` * `.css.meta.js` * `.ie.css.meta.js`
* `.bemdecl.js`
* `.deps.js`
* `.deps.js.deps.js`
* `.bemhtml.js.meta.js`
* `.js.meta.js`
* `.css.meta.js`
* `.ie.css.meta.js` -
По умолчанию исходным файлом считается файл `.bemjson.js`. Если его нет на диске, исходным станет `.bemdecl.js`. Если его тоже нет - `.deps.js`. В случаях, когда нет `.bemjson.js` статический html собран не будет.
По умолчанию исходным файлом считается файл `.bemjson.js`. Если его нет на диске, исходным станет `.bemdecl.js`. Если его
тоже нет - `.deps.js`. В случаях, когда нет `.bemjson.js` статический html собран не будет. -
Чтобы изменить перечень собираемых файлов, добавьте в `.bem/make.js` следующий код:
Чтобы изменить перечень собираемых файлов, добавьте в `.bem/make.js` следующий код:
-
getTechs: function() { return [ 'bemdecl.js', 'deps.js', 'bemhtml.js', 'css', 'js', 'priv.js' ]; } }); ```
getTechs: function() {
return [
'bemdecl.js',
'deps.js',
'bemhtml.js',
'css',
'js',
'priv.js'
];
}
});
``` -
Если вы хотите дополнить стандартный набор своими:
Если вы хотите дополнить стандартный набор своими:
-
getTechs: function() { return this.__base().concat(['priv.js', 'pub.js']); } }); ```
getTechs: function() {
return this.__base().concat(['priv.js', 'pub.js']);
}
});
``` -
`this.__base()` вызывает базовый метод, который вернет нам массив технологий по умолчанию. С помощью `concat()` мы добавляем в него технологии `priv.js` и `pub.js` и возвращаем его.
`this.__base()` вызывает базовый метод, который вернет нам массив технологий по умолчанию. С помощью `concat()` мы добавляем
в него технологии `priv.js` и `pub.js` и возвращаем его. -
Рекомендуется возвращать список явно, т.е. переопределять `getTechs()` как в первом примере, чтобы избежать побочных эффектов, если вдруг поменяется список технологий по умолчанию.
Рекомендуется возвращать список явно, т.е. переопределять `getTechs()` как в первом примере, чтобы избежать побочных
эффектов, если вдруг поменяется список технологий по умолчанию. -
**ВАЖНО:** Технологии в массиве должны идти в порядке зависимости друг от друга. То есть технология B, зависящая от технологии A, должна быть в списке **ниже** A. Также в этом списке должны быть все технологии, в том числе исходный файл, например `bemjson.js`.
**ВАЖНО:** Технологии в массиве должны идти в порядке зависимости друг от друга. То есть технология B, зависящая от
технологии A, должна быть в списке **ниже** A. Также в этом списке должны быть все технологии, в том числе исходный файл,
например `bemjson.js`. -
###### Сборка merged (раньше так же назывался common) бандла Merged бандл — это бандл, который объединяет в себе декларации всех бандлов уровня. Соответственно по такой объединенной декларации собираются и объединенные конечные файлы. Например, css будет включать в себе все стили, используемые всеми бандлами.
###### Сборка merged (раньше так же назывался common) бандла
Merged бандл — это бандл, который объединяет в себе декларации всех бандлов уровня. Соответственно по такой объединенной
декларации собираются и объединенные конечные файлы. Например, css будет включать в себе все стили, используемые всеми бандлами. -
Merged бандл может быть полезен, например, если вы хотите использовать общие файлы статики (js, css) для нескольких страниц проекта. Или при использовании технологии priv.js держать шаблоны страниц в одном файле.
Merged бандл может быть полезен, например, если вы хотите использовать общие файлы статики (js, css) для нескольких
страниц проекта. Или при использовании технологии priv.js держать шаблоны страниц в одном файле. -
Следующий код включит сборку merged бандла для всех уровней:
Следующий код включит сборку merged бандла для всех уровней:
-
```js MAKE.decl('BundlesLevelNode', { buildMergedBundle: function() { return true; } }); ```
```js
MAKE.decl('BundlesLevelNode', {
buildMergedBundle: function() {
return true;
}
});
``` -
Если merged бандл нужен только в выборочных уровнях, необходимо добавить условие (будем собирать merged только для уровня `pages-desktop`):
Если merged бандл нужен только в выборочных уровнях, необходимо добавить условие (будем собирать merged только для уровня
`pages-desktop`): -
```js var PATH = require('path');
```js
var PATH = require('path'); -
MAKE.decl('BundlesLevelNode', { buildMergedBundle: function() { if (this.getLevelPath() === 'pages-desktop') return true;
MAKE.decl('BundlesLevelNode', {
buildMergedBundle: function() {
if (this.getLevelPath() === 'pages-desktop') return true; -
return false; } }); ```
return false;
}
});
``` -
Метод `getLevelPath()` (есть у узлов-уровней и узлов-бандлов) возвращает относительный путь данного уровня или путь уровня данного бандла. С его помощью мы можем определить, нужно производить какие-либо действия для уровня или нет.
Метод `getLevelPath()` (есть у узлов-уровней и узлов-бандлов) возвращает относительный путь данного уровня или путь
уровня данного бандла. С его помощью мы можем определить, нужно производить какие-либо действия для уровня или нет. -
Изменить название merged банлда можно следующим образом: ```js MAKE.decl('BundlesLevelNode', {
Изменить название merged банлда можно следующим образом:
```js
MAKE.decl('BundlesLevelNode', {