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

时间:2014-05-03 18:39:13

标签: javascript json node.js glob gulp

考虑以下两个文件:

config.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负责添加该前缀(不知何故),并且我的config.json看起来像这样:

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

2 个答案:

答案 0 :(得分:5)

使用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/

答案 1 :(得分:0)

你不能这样做吗

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选项,尽管没有记录。