【问题标题】:How to parse path dynamically in gulp.src.options.base如何在 gulp.src.options.base 中动态解析路径
【发布时间】:2016-08-01 15:10:56
【问题描述】:

我正在尝试使用 main-bower-files 编写基于 gulp 的应用程序。我想将我和供应商的所有资产文件复制到 %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。 因此,理想的情况是将 base 编写为解析供应商字体的路径并取 /fonts 之前的所有路径的正则表达式。怎么做?

供应商文件夹具有下一个结构:

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

【问题讨论】:

    标签: javascript gulp main-bower-files


    【解决方案1】:

    因此,理想的情况是将 base 编写为正则表达式,用于解析供应商字体的路径并采用 /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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 2023-01-09
      相关资源
      最近更新 更多