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

所以我通过NPM和Browserify使用ReactJS,但是我正在试图弄清楚如何在生产模式下构build它,就像自述文件所说的那样,但它似乎并不工作。 我有这个代码来设置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错误? 或者其他的东西。

反应已经configuration自动envify 。 它会select构build脚本本身运行的环境。在运行实际的构build脚本之前,通常会设置NODE_ENV ,例如

 NODE_ENV=production gulp build 

或者甚至更好,你已经把你的构build步骤添加到你的package.json"scripts"块,那么你可以做

 npm run --production build 

只需改变

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