使用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 });