使用browserify / envify删除process.env.NODE_ENV?

时间:2015-03-09 10:28:40

标签: javascript node.js reactjs browserify

所以我通过NPM和Browserify使用ReactJS但是我试图弄清楚如何在生产模式下构建它,就像自述文件所说,但它似乎没有用。我有这个代码来设置browserify:

var browserify = require('browserify');
var envify = require('envify/custom');
var debug = false;

...

var libraries = browserify({
  debug: debug
}).transform(envify({
  _: 'purge',
  NODE_ENV: debug ? 'development' : 'production'
}));

gulpConfig.tasks.browserify.transformers.forEach(function(transform) {
  libraries.transform(transform);
});

gulpConfig.tasks.browserify.libraries.forEach(function(metaData) {
  if(metaData.path) {
    libraries.require(metaData.path, {
      expose: metaData.name
    });
  } else {
    libraries.require(metaData.name);
  }
});

var libraryStream = libraries.bundle()
.on('error', function(err){
  var message;

  if(err.description)
    message = 'browserify error: ' + err.description + ' when parsing ' + err.fileName + ' | Line ' + err.lineNumber + ', Column ' + err.column;
  else {
    message = err.message;
  }

  gutil.log(gutil.colors.red(message));

  this.emit('end');
})
.pipe(source('libraries.js'));

libraryStream.pipe(gulp.dest(gulpConfig.buildPath));

然而,当我查看已编译的代码时,我看到了一堆:

if ("production" !== process.env.NODE_ENV) {

我虽然应该编译为:

if ("production" !== "production") {

然后可以通过UglifyJS2等工具自动删除。我设置Envify错了吗?什么的。

2 个答案:

答案 0 :(得分:6)

React已自动配置envify。它将选择运行构建脚本本身的环境。在运行实际构建脚本之前,通常会设置NODE_ENV,例如。

NODE_ENV=production gulp build

或者甚至更好,您已将构建步骤添加到"scripts"的{​​{1}}块中,因此您可以这样做

package.json

答案 1 :(得分:2)

只需更改为

var libraries = browserify({
  debug: debug
}).transform(envify({
  _: 'purge',
  NODE_ENV: debug ? 'development' : 'production'
}), {
  global: true
});