捆绑的 ReactJS 应用程序的大小
Size of bundled ReactJS app
我正在尝试减小我的 reactjs 应用程序 bundle.js 文件的大小。对于一个相对简单的应用程序,我有其浏览器化的 js 文件大小 - 452Kb。
为了构建它,我将 NPM 与相应的 package.json 文件一起使用:
{
"name": "MyApp-React",
"version": "0.0.1",
"description": "My App Description",
"main": "app.js",
"scripts": {
"watch": "watchify app.js -o public/js/bundle.js -v",
"browserify": "browserify app.js | uglifyjs > public/js/bundle.js",
"build": "npm run browserify",
"start": "npm install"
},
"author": "",
"dependencies": {
"axios": "^0.14.0",
"body-parser": "^1.15.2",
"clipboard": "^1.5.12",
"express": "~4.9.7",
"express-handlebars": "~1.1.0",
"express-session": "^1.14.1",
"highlight.js": "^9.7.0",
"node-jsx": "~0.12.4",
"react": "~15.3.1",
"react-dom": "^15.3.1",
"react-maskedinput": "^3.2.4",
"react-modal": "^1.4.0",
"react-router": "^2.8.1"
},
"devDependencies": {
"browserify": "~6.0.3",
"nodemon": "^1.2.1",
"reactify": "~1.1.1",
"uglify-js": "~2.4.15",
"watchify": "^3.1.1"
},
"browserify": {
"debug": false,
"transform": [
"reactify"
]
}
}
不是 Node JS/ReactJS 开发方面的专家我希望我做错了什么,但我找不到什么。
暂时我尝试了一些东西:app.js 文件有一行代码设置 NODE_ENV 变量到 'production'
process.env.NODE_ENV = 'production';
我尝试的第二件事是使用带有 --production 参数的 npm p运行e 命令。有了这个 运行,我看到它从 node_modules 文件夹中删除了很多东西,但是 npm 运行 构建失败 运行 因为它错过了 devDependencies。我能做什么?
为减轻用户的下载负担,您可以做的一件事是获取 react 和 react-dom来自 CDN,而不是将它们放入您的包中。
将它们从 package.json 的 dependencies 部分移动到新部分 peerDependencies (see npm docs).
然后将 标签添加到您的 HTML 代码中,以便像这样加载 React 和 ReactDOM:
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react-dom.min.js"></script>
然后您需要更改 Browserify 配置以将 react 和 react-dom 识别为外部模块。
→ 见
我正在尝试减小我的 reactjs 应用程序 bundle.js 文件的大小。对于一个相对简单的应用程序,我有其浏览器化的 js 文件大小 - 452Kb。
为了构建它,我将 NPM 与相应的 package.json 文件一起使用:
{
"name": "MyApp-React",
"version": "0.0.1",
"description": "My App Description",
"main": "app.js",
"scripts": {
"watch": "watchify app.js -o public/js/bundle.js -v",
"browserify": "browserify app.js | uglifyjs > public/js/bundle.js",
"build": "npm run browserify",
"start": "npm install"
},
"author": "",
"dependencies": {
"axios": "^0.14.0",
"body-parser": "^1.15.2",
"clipboard": "^1.5.12",
"express": "~4.9.7",
"express-handlebars": "~1.1.0",
"express-session": "^1.14.1",
"highlight.js": "^9.7.0",
"node-jsx": "~0.12.4",
"react": "~15.3.1",
"react-dom": "^15.3.1",
"react-maskedinput": "^3.2.4",
"react-modal": "^1.4.0",
"react-router": "^2.8.1"
},
"devDependencies": {
"browserify": "~6.0.3",
"nodemon": "^1.2.1",
"reactify": "~1.1.1",
"uglify-js": "~2.4.15",
"watchify": "^3.1.1"
},
"browserify": {
"debug": false,
"transform": [
"reactify"
]
}
}
不是 Node JS/ReactJS 开发方面的专家我希望我做错了什么,但我找不到什么。
暂时我尝试了一些东西:app.js 文件有一行代码设置 NODE_ENV 变量到 'production'
process.env.NODE_ENV = 'production';
我尝试的第二件事是使用带有 --production 参数的 npm p运行e 命令。有了这个 运行,我看到它从 node_modules 文件夹中删除了很多东西,但是 npm 运行 构建失败 运行 因为它错过了 devDependencies。我能做什么?
为减轻用户的下载负担,您可以做的一件事是获取 react 和 react-dom来自 CDN,而不是将它们放入您的包中。
将它们从 package.json 的 dependencies 部分移动到新部分 peerDependencies (see npm docs).
然后将 标签添加到您的 HTML 代码中,以便像这样加载 React 和 ReactDOM:
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react-dom.min.js"></script>
然后您需要更改 Browserify 配置以将 react 和 react-dom 识别为外部模块。
→ 见