如何使用gulp-browserify创建多个包?

时间:2014-07-20 17:17:29

标签: browserify blanket.js

我尝试使用blanket.js来衡量我的浏览器库的测试覆盖率,并且覆盖数量没有多大意义,因为我包括jQuery, lodash,es5-shimx-tag-core.js

我想创建多个包,如browserify documentation中所述,但是来自gulp而不是命令行。基本上我想做一些像Sebastian Deutch describes这样的事情,除非最后没有连接步骤(他不做单独的捆绑以缩短编译时间)。

有人能指出我如何做到这一点的例子吗? (或者更好的代码覆盖方式......?)

1 个答案:

答案 0 :(得分:4)

经过大量的反复试验,放弃gulp-browserify插件后(它已经黑名单,但直接使用browserify的例子很难得到),我设法让这个工作。我gulpfile.js的显着部分是(我根本不确定source来电的内容):

var gulp = require('gulp'),
    gutil = require('gulp-util'),
    clean = require('gulp-rimraf'),
    rename = require('gulp-rename'),
    source = require('vinyl-source-stream'),
    browserify = require('browserify');

gulp.task('browserify:externals', function () {
    var vendor = browserify(['jquery', 'es5-shim', 'lodash']);
    vendor.require('jquery');
    vendor.require('lodash', {expose: '_'});
    vendor.require('es5-shim');
    return vendor.bundle()
        .pipe(source("not-used-but-needed-string.js"))
        .pipe(rename('external.js'))
        .pipe(gulp.dest('./dist'))
        .on('error', gutil.log);
});

gulp.task('browserify', ['browserify:externals'], function () {
    var app = browserify('./index.js');
    app.external('jquery');
    app.external('es5-shim');
    app.require('./index.js', {expose: 'maxby'});
    return app.bundle()
        .pipe(source("not-used-but-needed-string.js"))
        .pipe(rename('maxby.js'))
        .pipe(gulp.dest('./dist'))
        .on('error', gutil.log);
});

我还创建了一个repository,其中包含完整但极少的示例(我对此非常陌生,因此我们非常感谢所有更正)。