2016-09-16 5 views
0

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

EDIT: 私はその後、飲み込む-uglify正しく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')); 
+0

https://github.com/hughsk/envify –

答えて

1

私はタイスクリプト版はありませんが、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) 
+0

が正しい答えとして受け入れられるべきである:これは、上記のリンク先のページからです。 StackOverflowはこの種の質問を扱う他の多くのスレッドでは謎めいたものです。 – SeanRamzan

関連する問題