React bundle.jsのサイズを縮小しようとしています。Envify CLIが削除しないprocess.env.NODE_ENV
uglifyjs
を使用して追加の開発コードをすべて削除するには、BrowserifyでEnvifyを使用してprocess.env.NODE_ENV
を文字列 "production"に置き換えようとしています。
は、ここに私のコマンドです:
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
(私は思う)を使っているので問題は残っていました。
状況を示す簡単な例を作成しました。私はNODE_ENV=production browserify -t envify assets/js/app.js -o assets/js/bundle.js
を実行した場合、私はまだbundle.jsにprocess.env.NODE_ENV
のいくつかの事例を持っている
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')
);
:ここ
は私app.jsファイルです。
私は単純にbundle.js
を作成することによって回避策が見つかりました: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を許可していない理由を私はまだわかりませんよ一緒に働くことを願っています。
私はこれが他の人に同様の問題を引き起こすのを助けてくれることを願っています!!
で答えてくれてありがとう@JMMを。私は編集し、反応ルータによって引き起こされたと思っていた余分な問題を追加し、おそらく他の人を助けることができました。回避策は私の問題を解決します。 – Paul