2016-08-01 5 views
0

Я пытаюсь написать приложение на основе gulp, используя файлы main-bower. Я хочу скопировать все файлы моих и поставщиков активов в папку % build_dir%/assets, но файлы шрифтов следует скопировать в % build_dir%/assets/fonts. Без файлов поставщиков это можно сделать легко через gulp.src.options.base вариант. Но я не могу понять, как это сделать с файлами поставщиков. Теперь у меня естьКак анализировать путь динамически в 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%/активы. Итак, идеальным случаем является запись базы как регулярное выражение, которое анализирует путь к шрифтам поставщика и проходит весь путь до /fonts. Как это сделать?

папка Vendor имеет следующую структуру:

/bower_components 
    /lib1 
     /fonts 
     font1.woff 
    /lib2 
     /fonts 
     font2.otf 
    /lib3 
     /fonts 
     font3.ttf 

ответ

1

Таким образом, идеальный случай, чтобы написать базу как регулярное выражение, которое разбирает путь к поставщику шрифтов и принять все пути до/шрифтов. Как это сделать?

Невозможно. Опция 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 больше.