EN
sinitsyn-alex
sinitsyn-alex
12 июля 2017

Использую project-stub.
Есть страница index(desktop.bundles). В ней подключаются блоки через конструкцию include:

var fs = require('fs'),
    path = require('path'),
    nodeEval = require('node-eval');

function include(filename) {
    return nodeEval(fs.readFileSync(filename, 'utf8'), filename);
}

module.exports = {
    block: 'page',
    head: [
        { elem: 'css', url: 'index.min.css' }
    ],
    scripts: [
        { elem: 'js', url: 'index.min.js' }
    ],
    content: [
        include('desktop.blocks/header/header.bemjson.js'),
    ]
};

Тем самым - это позволяет уйти от стандартного require, который кэширует содержимое. Но это не решает задачу в целом. Так как:
Если изменить содержимое блока header и обновить страницу - изменения не подтянутся.
Приходится вручную каждый раз делать любые изменения в самом index.bemjson.js (например добавив 1 таб), тогда блок header обновиться.
Мое предположение: Сборщик считает, что файл index.bemjson.js не изменили и поэтому не пересобирает файл, а в блоках include ведь есть изменения. Возможно ли ему как то сообщить об этом, или отключить кэширование?

tadatuta
#tadatuta
12 июля 2017

Предположение верное.

Отключить кэширование полностью легко — достаточно использовать флаг ’-n’.

А хорошим вариантом было бы использование вотчера.

sinitsyn-alex
#sinitsyn-alex
12 июля 2017

Я правильно понимаю? В файле package.json дополняю scripts:

/* package.json */
"scripts": {
    "test": "enb make && enb make clean && gulp",
    "start": "enb server -n",
    "build": "enb make"
  },
sinitsyn-alex
#sinitsyn-alex
12 июля 2017

@tadatuta
Если так то, это не работает.
Работает только вот это: enb make --no-cache.
Но каждый раз собирать весь проект не круто(

tadatuta
#tadatuta
12 июля 2017

Вообще странно, должно работать с enb server -n.
Но более эффективный вариант, конечно, с вотчером. Пример можно подсмотреть в https://github.com/bem/bem-express/blob/master/package.json#L80.