如何为传递给gulp.src的globs添加路径前缀

How to add a path prefix to globs passed to gulp.src?

本文关键字:globs 添加 路径 前缀 src gulp      更新时间:2023-09-26

考虑以下两个文件:

json

{
  "vendorFiles": [
    "vendor/angular/angular.js",
    "vendor/angular-ui-router/release/angular-ui-router.js",
    "vendor/angular-ui-utils/modules/utils.js"
  ]
}

gulpfile.js

var gulp = require("gulp"),
    concat = require("gulp-concat"),
    config = require("./config");
gulp.task("build-vendor", function() {
    gulp.src(config.vendorFiles)
        .pipe(concat("vendor.js"))
        .pipe(gulp.dest("build"));
});

我怎样才能消除在config.json中为每个文件指定vendor/的需要?这个文件是由其他开发人员手工编辑的,所以我想让他们尽可能地轻松。

理想情况下,我希望我的gulpfile.js照顾添加前缀(以某种方式),并为我的配置。Json格式如下:

{
  "vendorFiles": [
    "angular/angular.js",
    "angular-ui-router/release/angular-ui-router.js",
    "angular-ui-utils/modules/utils.js"
  ]
}

可能有更好的Gulp特定解决方案,但这应该可以工作。

var gulp = require("gulp"),
    concat = require("gulp-concat"),
    config = require("./config");
gulp.task("build-vendor", function() {
    gulp.src(config.vendorFiles.map(function(a) {return 'vendor/' + a}))
        .pipe(concat("vendor.js"))
        .pipe(gulp.dest("build"));
});

:http://jsfiddle.net/AK4tP/

你就不能这样做吗

var gulp = require("gulp"),
    concat = require("gulp-concat"),
    config = require("./config");
gulp.task("build-vendor", function() {
    gulp.src(config.vendorFiles, {root: 'vendor/'})
        .pipe(concat("vendor.js"))
        .pipe(gulp.dest("build"));
});

Gulp应该在src()中接受root选项,尽管它没有文档。