Как сопоставить все файлы, кроме одного, в grunt concat?

Я использую grunt для объединения и минимизации моих файлов js, я использую следующую конфигурацию для части concat:

concat: {
  dist: {
    src: ['<banner:meta.banner>', 'js/*.js'],
    dest: 'js/script.js'
  }
}

Он соответствует каждому файлу в моей папке js, но мне нужно игнорировать modernizr.js, есть ли способ сделать это? Я предполагаю, что мне понадобится какое-то вуду сопоставления с образцом, чтобы сделать это, но я не уверен, как это сделать.

Заранее спасибо.


person Javier Villanueva    schedule 16.06.2012    source источник
comment
Обратите внимание, что 'js/*.js' - это не регулярное выражение, это селектор пути (или как они там называются). Регулярное выражение было бы js\/.*\.js (.* вместо * и, по крайней мере, с экранированием точки). Я бы рассмотрел другие способы исключения файлов, у них могут быть дополнительные настройки.   -  person Kobi    schedule 16.06.2012
comment
Вы правы, он использует minimatch для выбора файла, который преобразует выражения в объекты JavaScript RegExp, поэтому это не 100% регулярное выражение.   -  person Javier Villanueva    schedule 16.06.2012


Ответы (1)


Основываясь на документации, я бы попробовал:

js/!(modernizr).js
(js/)!(modernizr).js
{js/}!(modernizr).js
js/!({modernizr}).js
(js/)!({modernizr}).js
{js/}!({modernizr}).js
js/!{modernizr}.js
(js/)!{modernizr}.js
{js/}!{modernizr}.js

Если ни один из них не сработает, то, вероятно, вам не повезло...

person Ωmega    schedule 16.06.2012
comment
Спасибо, первый работал нормально, я пробовал js/!modernizr.js раньше, неудивительно, почему он не работал... - person Javier Villanueva; 17.06.2012
comment
@javiervd - В js/!modernizr.js вы использовали отрицание только для буквы m, поэтому это не сработало... - person Ωmega; 17.06.2012