在生产构建期间从包中删除 javascript 代码
Remove javascript code from bundle during production build
我注意到 ReactJS 有一些调试消息只出现在开发模式下。
当我在捆绑前在 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')
然后 gulp-uglify 正确地从生产构建中的包中删除了代码。
但是,在运行时(在浏览器中),process.env.NODE_ENV
未定义并且从未满足条件。
它怎么可能在 React 中起作用?
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'));
我没有打字稿版本,但你试过了吗gulp-remove-code?您可以在 JavaScript 周围加上一些注释,以在 运行 生产构建时删除您想要的任何代码。这是来自上面的链接页面:
var removeCode = require('gulp-remove-code');
gulp.src('./src/file.js')
.pipe(removeCode({ production: true }))
.pipe(gulp.dest('./dist'))
//removeIf(production)
value = JSON.stringify({key: 'value'}, null, 2);
//endRemoveIf(production)
我注意到 ReactJS 有一些调试消息只出现在开发模式下。
当我在捆绑前在 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')
然后 gulp-uglify 正确地从生产构建中的包中删除了代码。
但是,在运行时(在浏览器中),process.env.NODE_ENV
未定义并且从未满足条件。
它怎么可能在 React 中起作用?
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'));
我没有打字稿版本,但你试过了吗gulp-remove-code?您可以在 JavaScript 周围加上一些注释,以在 运行 生产构建时删除您想要的任何代码。这是来自上面的链接页面:
var removeCode = require('gulp-remove-code');
gulp.src('./src/file.js')
.pipe(removeCode({ production: true }))
.pipe(gulp.dest('./dist'))
//removeIf(production)
value = JSON.stringify({key: 'value'}, null, 2);
//endRemoveIf(production)