2016-08-01 79 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了。