在gulp / browserify捆绑包上运行多个转换

时间:2015-10-13 17:05:03

标签: node.js reactjs gulp browserify

我有一个React组件,我一直导出到一个bundle文件。我已经成功地使用babelify对其进行了改造,但是,我现在想在它上面运行envify。我似乎无法弄清楚如何使用browserify运行多个转换。我认为它一定是可能的,但是我不知道我的语法是否稍微偏离,或者我是否需要编写自定义转换,或者我是否应该在package.json中指定转换。这是我的gulp文件中的代码:

 var bundleComponent = function(bundler, source, component) {
   //bundler is just browserify('./client/components/TVScheduleTab/render.js')

   gutil.log('Bundling ' + component)

  return bundler
  //this throws an error
    .transform(babelify, envify({
      NODE_ENV: 'production'
    }))
    .bundle()
    .on('error', function(e){
      gutil.log(e);
    })
    .pipe(source)
    .pipe(gulp.dest('output/'));
};

2 个答案:

答案 0 :(得分:3)

你尝试过链接吗? 正确的解决方案在评论中

Call

答案 1 :(得分:1)

虽然这个答案出现在接受的答案之后,并且被接受的答案在某种程度上涵盖了这个问题,但我想说清楚而不需要浏览链接的github问题。

链接,尤其是envify,应该如下所示:

// NOTE: the "custom" part
var envify = require('envify/custom');

gulp.task('build-production', function() {
    browserify(browserifyOptions)
        .transform(babelify.configure(babelifyOptions))
        .transform(envify({
            NODE_ENV: 'production'
        }))
        .bundle()
        .on('error', handleErrors)
        .pipe(source('app.js'))
        .pipe(buffer())
        .pipe(uglify({ mangle: false }))
        .pipe(gulp.dest('./build/production/js'));
});