【问题标题】:Remove javascript code from bundle during production build在生产构建期间从包中删除 javascript 代码
【发布时间】:2016-09-16 13:31:53
【问题描述】:

我注意到 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 是未定义的,并且条件从未满足。

它怎么可能在反应中起作用?

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'));

【问题讨论】:

标签: javascript gulp bundle browserify uglifyjs


【解决方案1】:

我没有打字稿版本但你试过gulp-remove-code吗?您可以在 JavaScript 中加上一些 cmets,以便在运行生产构建时删除您想要的任何代码。这是来自上面的链接页面:

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) 

【讨论】:

  • 应该被接受为正确答案。不过,StackOverflow 充斥着许多其他讨论此类问题的线程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
  • 1970-01-01
  • 2011-11-15
  • 2023-02-26
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
相关资源
最近更新 更多