Смотря на то как написаны COA нет ясности, а из API то как мне использовать команды?
Вот мне надо собирать bem-tools-ом так, чтобы он не использовал cache,
И вроде нечто такое есть forceCache: ture
, но как мне
require('bem').api.build({ forceCahse: true, //..... })
выполнить то? Чтобы не использовал он Cache.... А то подает с ним постоянно.
https://github.com/express-bem/tools-make/blob/master/lib/index.js#L55 там два параметра. один — опции, второй — аргументы
@pavelpower скорее всего тебе нужно что-то типа:
@tadatuta т.е. https://github.com/express-bem/tools-make/blob/master/lib/index.js#L54 не в том месте стоит? надо после then?
Не пойдет этот код
версию менять сейчас не комильфо
@pavelpower либо я не понял, что ты хочешь сказать, либо версия у тебя актуальная.
@zxqfox Кроме того, что дергать нужно в
then()
, есть еще история про параллельные запросы (можно зацепить кэш незавершенной сборки и все взорвется). В качестве референса см. кодbem server
: https://github.com/bem/bem-tools/blob/support/0.9.x/lib/base-server.js#L188-L190 либо пример из дикой природы:@tadatuta А почему именно в then? Типа, поел — убери за собой?
Кстати, этот код будет падать в кластере, да?
призову @scf2k, возможно он вспомнит подробности
Про какой кеш речь?
замутили мы параллельно запускать несколько сборок под gulp с помощью bem-tools и все бы хорошо, но в корневой папке
.bem
постоянно появляется.bem/cache
и он всю прекрасную схему ломает. а вот если удалять постоянно этоcache
то все как бы работает нормально. Да, и при изменениях файлов в сборку попадают изменения. Так вот, как сделать так чтобы не было сего cacha сразу?ln -s /dev/null .bem/cache
? :-Dееееее, вот что значит мыслить ширшее :)
А как вы из-под галпа bem-tools запускаете? Типа
require('bem').api.make
? Если вы запускаете для нескольких разных проектов, то почему папка.bem/cache
одна?Так-то от кэша отказываться не оч круто, это замедляет сборку.
Если по чеснаку, то что с кешем что без него все едино.
А собираем сразу под несколько бандлов одновременно, с разными настройками по техналогиям и прочей ересью.
Ну вот, мне, допустим, надо сделать сборку сразу под 100500 устройств, да при этом, у samsung в сборку надо подтягивать спец файлы которые не укладываются в БЭМ архитектуру. По сему, такие вещи проще делать на синергии gulp и БЭМ.
Ну, если в настройках указать, что можно кешировать bem-core и bem-components, то кеш дает прирост скорости.
То есть проект один и вы сборку запускаете несколько раз, чтобы параллельно собирались бандлы?
У меня принципиально новая идея: а почему не хранить кеш в редисе или еще каком-то хранилище, к которому будет доступ у всех сборщиков?
@pavelpower кто понял жизнь, тот не спешит? ;)
@tadatuta стал философом - достиг просветления!
@zxqfox - и уж точно надо опционально. А еще хорошо бы указывать куда ложить кэш, причем для каждого бандла свой кэш - это то, что мне сейчас нужно.
небольшая ремарка, у меня несколько слоев переопределения у которых есть одинаковые по названию бандлы, и при сборке сразу всех кэш жутко конфликтует
@pavelpower меня не покидает ощущение, что вы сами себе создаете проблемы. можешь подробно рассказать про верхнеуровневую задачу, которую вы хотите решить? возможно, я смогу посоветовать какой-то более простой путь.
@tadatuta
require('bem/lib/level').resetLevelsCache();
заработал только после модификацииправда смысл в кэше совсем пропадает
@tadatuta В bem-server залипает кеш на фейлах, похоже.
https://github.com/bem/bem-tools/blob/support/0.9.x/lib/base-server.js#L201
_this._targetsInProcess
растет всегда, а снижается только при успешных рендрах@zxqfox не возьмусь утверждать, но вроде как декремент вызывается на
.fin()
— это методq
, который дергается в любом случае, даже если промис зареджектился или произошло исключение@tadatuta Да, ступил. Если
.fin
вызывается всегда гарантированно — то проблем с этим нет. Правда, не факт, что это работает ок под виндой, т.к. там были с этим проблемки.