Шаблон Grunt globbing не работает должным образом в grunt-contrib-watch

В grunt-contrib-watch я хочу отслеживать изменения как в <%%= yeoman.app %>/*.html, так и в любом файле HTML на одну папку глубже.

Поэтому моя задача смотреть выглядит так:

watch: {
    html: {
        files: ['<%%= yeoman.app %>/{,*/}*.html'],
        tasks: ['copy:html', 'replace', 'processhtml:dev']
    }
},

Когда я сохраняю изменения в <%%= yeoman.app %>/index.html, задача наблюдения выполняется, как и ожидалось. Однако, когда я создаю каталог внутри <%%= yeoman.app %>, а затем создаю newfile.html внутри этого нового каталога, watch не срабатывает.

Я также пробовал files: ['<%%= yeoman.app %>/*.html', '<%%= yeoman.app %>/*/*.html'] и даже files: ['<%%= yeoman.app %>/**/*.html'] для соответствия всем подкаталогам, но все равно watch не срабатывает при редактировании HTML-файла внутри подкаталога.

Что мне не хватает?


person Fisu    schedule 16.10.2013    source источник


Ответы (1)


Я думаю, что ваш шаблон подчеркивания искажен. Попробуйте это вместо этого:

files: ['<%= yeoman.app %>/**/*.html']

Запуск grunt watch --verbose даст вам список всех файлов, за которыми будет наблюдать задача. Убедитесь, что пути, за которыми вы ожидаете наблюдать, указаны там.

person Ben    schedule 16.10.2013
comment
Изменение с <%%= на <%= приводит к зависанию браузера, и, кроме того, все остальные мои задачи без проблем используют формат <%%=. Запуск watch --verbose просто указывает Verifying property watch.html.files exists in config…OK - person Fisu; 16.10.2013
comment
Если при использовании опции --verbose у вас нет списка файлов, значит grunt не просматривает файлы. Вы должны получить набор строк вроде: Watching some/path/to/example-file.html for changes. Можете ли вы переключить динамический <%%= yeoman.app %> на явный каталог, который, как вы знаете, действителен, использовать синтаксис /**/ и посмотреть, что выдает опция --verbose? - person Jordan Kasper; 16.10.2013
comment
Когда я переключаюсь на нединамический путь: app/**/*.html у меня возникает та же проблема - он реагирует на изменения в app/index.html, но не на изменения во вновь созданном app/new_dir/index.html. Запуск --verbose показывает список всех ожидаемых HTML-файлов, но после создания new_dir/index.html мне нужно остановить наблюдение, а затем перезапустить его, чтобы заставить его смотреть new_dir/index.html. - person Fisu; 16.10.2013
comment
Ах. Похоже, это известная проблема; загляните в трекер проблем для получения дополнительной информации. github.com/gruntjs/grunt-contrib-watch/issues/166 - person Ben; 16.10.2013
comment
@Бен Спасибо за информацию - person Fisu; 17.10.2013