Скажем, у меня есть структура каталогов LESS CSS, подобная этой:
less/
core/
_main.less
header.less
body.less
footer.less
contact/
_main.less
form.less
details.less
Я хочу написать задачу Gulp, которая будет искать файлы _main.less
в каждом подкаталоге каталога less/
, передавать это в gulp-less и записывать вывод в каталог css/
следующим образом:
css/
core.css
contact.css
Поскольку _main.less
включает в себя другие файлы в своем каталоге, нужно будет анализировать только файлы _main.less
, но я хочу, чтобы выходной файл имел имя каталога, в котором он находится.
Пока у меня это:
gulp.src('less/*/*/_main.less')
.pipe(less())
.pipe(gulp.dest('css'));
Но это создаст такую структуру каталогов:
css/
core/
_main.css
contact/
_main.css
Но это не то, чего я хочу. Я думал использовать регулярное выражение для соответствия имени каталога, вернуть его в matches
var и соответствующим образом переименовать файл. Что-то вроде этого:
gulp.src(/less\/[^\/]+\/([^\/]+)\/_main.less/)
.pipe(less())
.pipe(rename(function(context) {
context.src.matches[1] + '.css'
}))
.pipe(gulp.dest('css'));
Этот код является просто примером. Я не могу понять, как сделать что-то подобное, или если это вообще возможно.
Это возможно? Если да, то как?