我注意到ReactJS有一些只在开发模式下出现的调试消息。在生产版本中从软件包中删除javascript代码
当我在捆绑之前在我的gulpfile.js中设置process.env.NODE_ENV = 'production';
时,调试消息消失。
我该如何编写这样的代码,它只出现在开发(调试)版本中,但未捆绑到生产版本中?
类似:
function sayHello(message){
#IF DEBUG
if (!message) console.log("message cannot be null");
#ENDIF
alert(message);
}
编辑: 当我试图用if (process.env.NODE_ENV !== 'production')
然后正确地吞掉,丑化删除从包中的代码在生产版本。 但是,在运行时(在浏览器中),process.env.NODE_ENV
未定义,并且从未满足条件。
它是如何工作的?
var browserify = require("browserify");
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
process.env.NODE_ENV = 'production';
var bundler = browserify({ debug: false })
.require('react')
.require('react-dom')
bundler.bundle()
.pipe(source("reactbundle.js"))
.pipe(buffer());
.pipe(uglify())
.pipe(gulp.dest(paths.distDir + 'scripts'));
https://github.com/hughsk/envify –