Browserify在我的browserify捆绑包中捆绑了react和react-dom的生产和开发版本,这使得捆绑包大大超出了应有的大小。简单的可复制示例:
main.js:
var React = require('react');
var ReactDOM = require('react-dom');
ReactDOM.render(
React.createElement('h1', null, 'Hello Planet'),
document.getElementById('root')
);
// To simplify the workflow, this example does not use JSX or ES2015.
index.html:
<!DOCTYPE html>
<html>
<head>
<title>Page</title>
<meta charset="utf-8">
</head>
<body>
<div id="root"></div>
<script src="_build/main.js"></script>
</body>
</html>
要构建main.js
,我运行了以下命令:
NODE_ENV=production browserify --full-paths main.js -o _build/main.js
所得的包大小为786 kb。使用disc对分发包进行的分析显示,分发包中同时包含react-dom.development.js
(610.9 kb)和react-dom.production.min.js
(92.5 kb)。 react.development.js
(48.4 kb)和react.production.min.js
(5.4 kb)都一样,它们都包含在分发包中。
所以问题是:由于react和react-dom的开发版本不是捆绑包的必要组件,因此如何首先不包括开发版本?如何指示浏览器只捆绑react和react-dom的生产版本?