問題は、のコールがreact-dom
のreact
モジュールがnode_modules
に解決されています。そのモジュールのpackage.json
にはmain
がreact.js
と指定されています。そのため、react.min.js
に加えて、非縮小ソースも含まれるバンドルになります。
browserify \
--require ./node_modules/react/dist/react.min.js:react \
> bundle-react.js
バンドルサイズがわずかに大きいだけreact.min.js
よりです:あなたが唯一のreact.min.js
をバンドルした場合、その
注
ls -l node_modules/react/dist/react.min.js
... 21339 Dec 23 09:43 node_modules/react/dist/react.min.js
ls -l bundle-react.js
... 22006 Dec 23 11:56 bundle-react.js
問題を解決するために、あなたはreact
を除外するBrowserifyを指示する必要がありますし、 react-dom
のように、代替のメカニズムを提供する必要があります。つまり、--require
オプションを指定します:
browserify \
--exclude react \
--require ./node_modules/react/dist/react.min.js:react \
--exclude react-dom \
--require ./node_modules/react-dom/dist/react-dom.min.js:react-dom \
> bundle-lib.js
バンドルサイズは現在組み合わせ、縮小さファイルに非常に近いようになります。
ls -l node_modules/react/dist/react.min.js
... 21339 Dec 23 09:43 node_modules/react/dist/react.min.js
ls -l node_modules/react-dom/dist/react-dom.min.js
... 123996 Dec 23 09:43 node_modules/react-dom/dist/react-dom.min.js
ls -l bundle-lib.js
... 146227 Dec 23 11:39 bundle-lib.js
あなたはその後あなたのライブラリーのバンドルからreact
とreact-dom
を必要とするアプリケーションバンドルを作成することができるはずです。アプリケーションバンドルを作成するためのBrowserifyコマンドはreact
とreact-dom
ため--exclude
オプションを指定する必要があることに注意してください - 彼らは、ライブラリバンドルからではなくnode_modules
から必要とされるように:
browserify \
--exclude react \
--exclude react-dom \
app.js > bundle-app.js
だから、これは同様の質問(HTTPのように見えます//stackoverflow.com/questions/27922208/how-to-keep-browserify-bundle-size-sensible-when-using-requires-for-thirdparty-s)。また、私は救済について話すこのブログの記事を見つけました(https://shellmonger.com/2016/01/12/reduce-the-size-of-your-react-applications/) –