0

React bundle.js のサイズを縮小しようとしています。

余分な開発コードをすべて使用および削除するために、 Envify を Browserify で使用process.env.NODE_ENVして文字列「production」に置き換えようとしています。uglifyjs

これが私のコマンドです:browserify -t [envify --NODE_ENV production] assets/js/app.js -o assets/js/bundle.js

したがって、私の bundle.js は正常に作成されましたが、まだいくつかのインスタンスがありますprocess.env.NODE_ENV

私の「app.js」または他のコンポーネントにあるすべてのインスタンスは、「実稼働」に正しく置き換えられます。

...しかし、node_modulesフォルダーから必要なすべてのモジュール (反応など) では、インスタンスは置き換えられません。

どんな助けでも大歓迎です!THX!

******************* 編集 **********************

JMMのソリューションは元の質問にうまく答えましたが、私が使用しているため、まだ問題がありましたReact-Router(私は思います)。

状況を示す簡単な例を作成しました。

ここに私のapp.jsファイルがあります:

var React = require('react');           
var ReactDOM = require('react-dom');
var Router = require('react-router').Router; 
var Route = require('react-router').Route;

var Example = React.createClass({
    render: function(){
        console.log(process.env.NODE_ENV);
        if (process.env.NODE_ENV === "development") { 
          console.log('Development Version');
        } else {
            console.log('Production Version');
        }
        return <span>Hello World!</span>;
    }
});

var AppRoutes = ( <Route name="/" path="/" component={Example} /> );


ReactDOM.render(
    (<Router>
        {AppRoutes}
    </Router>), 
    document.getElementById('ExampleApp')
    );

を実行すると、まだbundle.js に のNODE_ENV=production browserify -t envify assets/js/app.js -o assets/js/bundle.jsインスタンスがいくつかあります。process.env.NODE_ENV

bundle.jswith:を作成するだけでbrowserify assets/js/app.js -o assets/js/bundle.js回避策を見つけ、次にバンドルでenvifyを実行します:NODE_ENV=production envify assets/js/bundle.js > assets/js/bundle2.js

これで問題は解決しましたがreact-router、browserify と envify を一緒に動作させない理由はまだわかりません。

これが同様の問題を抱えている他の人に役立つことを願っています!!

4

2 に答える 2