2016-08-01 111 views
0

我想写使用主凉亭,文件吞掉为基础的应用程序。我想我和供应商的资产中的所有文件复制到%build_dir%/资产文件夹,但字体文件应该在%build_dir%/资产/字体被复制。如果没有供应商的文件是可以做到轻松地通过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%/资产。 因此,理想的情况是写基地为正则表达式来解析路径到供应商的字体和之前/字体采取一切路径。怎么做?

卖方文件夹具有下结构:

/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了。