Как динамически разобрать путь в gulp.src.options.base
Я пытаюсь написать приложение на основе gulp, используя main-bower-files. Я хочу скопировать все мои файлы ресурсов и файлы ресурсов вендора в папку%build_dir%/assets, но файлы шрифтов должны быть скопированы в %build_dir%/assets / fonts. Без вендорных файлов это легко сделать с помощью опции gulp.src.options.base. Но я не могу понять, как это сделать с файлами поставщика. Теперь у меня есть
gulp.task('assets', ['less'], function() {
return gulp.src('src/less/fonts/*', {base: 'src/less'})
.pipe(addSrc('src/assets/**.*'))
.pipe(addSrc(mainBowerFiles(/.*woff|woff2|otf|ttf/, {includeDev: true})))
.pipe(gulp.dest(buildDir + '/assets'));
});
Но он копирует вендорные шрифты в %build_dir%/assets. Таким образом, идеальный вариант - записать базу в виде регулярного выражения, которое анализирует путь к шрифту поставщика и использует весь путь до / fonts. Как это сделать?
Папка Vendor имеет следующую структуру:
/bower_components
/lib1
/fonts
font1.woff
/lib2
/fonts
font2.otf
/lib3
/fonts
font3.ttf
1 ответ
Таким образом, идеальный вариант - записать базу в виде регулярного выражения, которое анализирует путь к шрифту поставщика и использует весь путь до /fonts. Как это сделать?
Невозможно. base
опция не поддерживает регулярные выражения. Только строки.
Вам не нужно base
вариант в любом случае. Просто создайте два потока, каждый со своим gulp.dest()
, Затем объедините эти потоки, используя merge-stream
:
var merge = require('merge-stream');
gulp.task('assets', ['less'], function() {
return merge(
gulp.src(['src/less/fonts/*'].concat(mainBowerFiles(/.*woff|woff2|otf|ttf/, {includeDev: true})))
.pipe(gulp.dest(buildDir + '/assets/fonts')),
gulp.src('src/assets/**.*')
.pipe(gulp.dest(buildDir + '/assets')));
});
Это также означает, что вам не нужно gulp-add-src
больше.