3

我正在使用带有 gulp 的 browserify 将 javascript 代码捆绑到我的 Web 应用程序中,并且我正在使用 babelify 将代码转换为与 es6 兼容,如下所示。

gulp.task('js',function(){
var bundleStream = browserify(config.paths.mainJs)
    .transform("babelify", {presets: ["es2015", "react"]})
    .bundle()
    .on('error',console.error.bind(console))

bundleStream
    .pipe(source('compiled.js'))
    .pipe(buffer())
    .pipe(uglify())
    .pipe(rename('compiled.min.js'))
    .pipe(gulp.dest(config.paths.dist + '/js'))
});

现在,我意识到我需要使用browserify-shim,并且根据文档使用它的方式是在package.json中包含以下json:

{ 
    "browserify": {
    "transform": [ "browserify-shim" ]
    }
}

有没有办法使用 gulp 使用多个转换?

如是) {

什么是正确的语法?在这种情况下,指定它们的顺序是否对创建最终包很重要?

}

别的 {

如果我指定然后将 shim 转换为 package.json,但我将 babelify 转换保留为 gulpfile,那么 browserify 生成最终包时会出现问题吗?两个转换都会执行吗?

}

谢谢!!

4

1 回答 1

1

我猜你的设置很好,但如果你的所有转换都在同一个地方,它会更清晰、更容易理解发生了什么。我会将它们放在您的 gulpfile 中,并让您的 babelify 转换位于您的 browserify-shim 转换之前:

var browserifyShim = require('browserify-shim'); // <--require statement at top
// gulp.task...........
var bundleStream = browserify(config.paths.mainJs)
    .transform("babelify", {presets: ["es2015", "react"]})
    .transform(browserifyShim) // <-- put your browserify-shim transform here.
    .bundle()
    .on('error',console.error.bind(console))
// Rest of gulpfile
于 2016-01-08T16:24:30.113 回答