Chain Gulp glob来浏览转换

我有一个项目有一些相对不相关的页面,每个页面都包含他们自己的入口点脚本。 这些脚本require其他许多使用commonjs语法的脚本,并且需要通过6to5进行转换,并通过browserify进行捆绑。

我想建立一个吞噬任务,捕获所有匹配模式的文件,并将它们传递给捆绑器,但我不知道如何将文件从gulp.src传递到gulp.src browserify(filename)

我的gulpfile看起来像:

var gulp = require("gulp");
var browserify = require("browserify");
var to5browserify = require("6to5-browserify");
var source = require("vinyl-source-stream");

var BUNDLES = [
    "build.js",
    "export.js",
    "main.js"
];

gulp.task("bundle", function () {
    /* Old version, using glob:
    return gulp.src("src/** /*.js")
        .pipe(sixto5())
        .pipe(gulp.dest("dist"));
    */

    // New version, using array:
    return BUNDLES.map(function (bundle) {
        return browserify("./src/" + bundle, {debug: true})
            .transform(to5browserify)
            .bundle()
            .pipe(source(bundle))
            .pipe(gulp.dest("./dist"));
    });
});

gulp.task("scripts", ["bundle"]);

gulp.task("html", function () {
    return gulp.src("src/**/*.html")
        .pipe(gulp.dest("dist"));
});

gulp.task("styles", function () {
    return gulp.src("src/**/*.css")
        .pipe(gulp.dest("dist"));
});

gulp.task("default", ["scripts", "html", "styles"]);

这看起来可行,但不可维护:我将尽快添加更多脚本,并且不希望每次都将它们添加到数组中。

我试过在gulp.src(glob).pipe调用中使用gulp.src(glob).pipe ,并在调用之后(此处显示)和gulp.src(glob).map (方法不存在)调用管道。

如何将gulp.src与基于名称的转换器(如gulp.src相链接?


使用through2制作一个一次性自定义插件流,完成所有脏活动。

不幸的vinyl-transformvinyl-source-stream以及与之相关的解决方案都存在缺陷,所以我们必须寻求一些定制的东西。

var gulp = require('gulp');
var through = require('through2');
var browserify = require('browserify');

gulp.task('bundle', function() {
    var browserified = function() {
        return through.obj(function(chunk, enc, callback) {
            if(chunk.isBuffer()) {
                var b = browserify(chunk.path);
                    // Any custom browserify stuff should go here
                    //.transform(to5browserify);

                chunk.contents = b.bundle();

                this.push(chunk);

            }
            callback();
        });
    };

    return gulp.src(['./src/**/*.js'])
        .pipe(browserified())
        .pipe(gulp.dest('dest'));
});

您可以在BUNDLES数组中指定球体并排除任何文件:

var BUNDLES = [
    "app/**/*.js",
    "export.js",
    "app/modules/**/*.js",
    "!app/modules/excluded/*.js"
];
链接地址: http://www.djcxy.com/p/32925.html

上一篇: Chain Gulp glob to browserify transform

下一篇: gulp browserify reactify task is quite slow