Синтаксис для OR в переменной gulp JavaScript
Это должно быть легко. У меня есть эта переменная пути, объявленная в gulpfile.js
:
paths = {
img: [
'src/patternlab/**/**/*.jpg',
'src/patternlab/**/**/*.png'
]
};
Я хотел бы использовать простой переключатель OR для расширения файла по строкам:
'src/patternlab/**/**/*.(jpg|png)'
Но я не могу найти правильный синтаксис! Попробовали множество перестановок, просмотрели MDN и т.д.
Ответы
Ответ 1
Шаблонами, используемыми gulp, являются те, которые рекламируются пакетом npm glob, который не использует точный синтаксис соответствия шаблону регулярного выражения, я полагаю, потому что эти вещи начинают выглядеть ужасающими при сопоставлении с путями.
документация, касающаяся minimatch (используемая glob), охватывает ваш описанный случай:
'/**/*.+(jpg|png|tiff)'
Ответ 2
Вы пробовали это:
^src\/patternlab\/.{2}\/.{2}\/.\.(jpg|png)$
указанное вами регулярное выражение также будет соответствовать файлам с именами файлов, например some.png something else
.
попробуйте это в консоли:
var newarr = []
var paths = {
img: [
'src/patternlab/**/**/*.jpg',
'src/patternlab/**/**/*.png',
'src/patternlab/**/**/*.tiff',
'src/patternlab/**/**/*.jpg'
]
};
for(var i=0;i<paths.img.length;i++){
if (/^src\/patternlab\/.{2}\/.{2}\/.\.(jpg|png)$/.test(paths.img[i])){
newarr.push(paths.img[i]);
}
}
console.log(newarr);