我正在使用react
和webpack
作为模块捆绑程序编写一个Web应用程序。jsx
到目前为止,我的代码还很轻巧,整个文件夹的大小为25 kb。
我bundle.js
创建的webpack
虽然是2.2 mb。使用-p
标志运行优化后,它将捆绑包减少到700kb,这仍然非常大。
我调查了react.min.js
文件,文件大小为130kb。
Webpack是否可能产生如此大的文件,或者我做错了什么?
webpack.config.js
var path = require('path');
var webpack = require('webpack');
module.exports = {
entry: './public/components/main.jsx',
output: {
path: __dirname + "/public",
filename: 'bundle.js'
},
module: {
loaders: [{
test: /.jsx?$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015', 'react']
}
}, {
test: /\.css$/,
loader: "style!css"
}]
}
};
编辑
package.json:
{
"name": "XChange",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"main": "./bin/www",
"devDependencies": {
"body-parser": "~1.13.2",
"cookie-parser": "~1.3.5",
"debug": "~2.2.0",
"express": "~4.13.1",
"jade": "~1.11.0",
"morgan": "~1.6.1",
"serve-favicon": "~2.3.0",
"react-dom": "~0.14.3",
"react": "~0.14.3",
"webpack": "~1.12.9",
"babel-loader": "~6.2.0",
"babel-core": "~6.2.1",
"babel-preset-react": "~6.1.18",
"babel-preset-es2015": "~6.1.18",
"react-bootstrap": "~0.28.1",
"material-ui": "~0.14.0-rc1",
"history": "~1.13.1",
"react-router": "~1.0.2",
"style-loader": "~0.13.0",
"css-loader": "~0.18.0"
},
"dependencies": {
"express-validator": "~2.18.0",
"mongoose": "~4.2.9",
"kerberos": "~0.0.17",
"bcrypt": "~0.8.5"
}
}
根据您的评论,您正在使用material-ui
和react-bootstrap
。这些依赖项与您的react
和react- dom
软件包一起由webpack捆绑在一起。任何时候,您require
或import
软件包都将其捆绑为捆绑文件的一部分。
这就是我的猜测。您可能正在使用 库 方式导入react-bootstrap
和material-ui
组件: __
import { Button } from 'react-bootstrap';
import { FlatButton } from 'material-ui';
这是很好的和方便,但它并不仅仅捆绑Button
和FlatButton
(和它们的依赖),但 整个 库。
减轻它的一种方法是尝试只import
或require
需要什么,让我们说一下 组件 方法。使用相同的示例:
import Button from 'react-bootstrap/lib/Button';
import FlatButton from 'material-ui/lib/flat-button';
这只会捆绑Button
,FlatButton
以及它们各自的依赖关系。但不是整个图书馆。因此,我将尝试摆脱所有 库 导入,而改用 组件 方式。
如果您不使用很多组件,那么它将大大减少捆绑文件的大小。
作为进一步的解释:
当使用 库 方式时,您将导入所有这些react-bootstrap和所有这些material-
ui
组件,无论您实际使用的是哪个组件。
我正在使用和作为模块绑定器编写一个web应用程序。到目前为止,我的代码非常轻,整个文件夹的大小是25kb。 然而,我的是从创建的,其大小为2.2MB。在使用标志运行优化后,它将捆绑包减少到700kb,这仍然非常大。 我已经查看了文件,它的大小是130kb。 有没有可能webpack产生了这么大的文件,或者我做错了什么? webpack.config.js 编辑 package.json:
所以我能够将我的捆绑包大小从13mb减少到681 mb 我做了一些优化,比如正确的生产配置,优化库,比如lodash,用date fns替换momentjs。 现在,大多数软件包都不超过1mb,并且大多数都是由npm安装的依赖项。 在这里使用webpack-bundle-Analyzer就是我的bundle现在的样子 你们觉得我能做些什么来减少包裹的大小吗?也许删除jquery并转到vanilla
我有一个使用react开发的网站,它只有一个页面,但产品包大小是1.11MIB。我正在使用firestore、firebase storage、material UI、react redux,该应用程序运行良好,除了捆绑包大小外,一切正常。 我的网页包配置文件 我不知道我在这里错过了什么来减小节点模块的大小。如果我们有任何其他选择,以减少捆绑大小,请给我一个建议。
我正在制作一个Swing GUI。我没有得到如何在JPanel中最大和最小JTable。
我遇到了MySQL的问题。我收到错误。关于StackOverflow,他们说MySQL配置中的很可能太低。 我尝试在中更改它,但该文件是不可编辑的。不能在PA上使用。 我正在使用Sqlalchemy处理与MySQL服务器的交互。 我能做什么?
我有以下CEP PatternStream,其中数据流是基于实体ID分区的,因为只有实体具有相同的实体ID时,我才对模式匹配感兴趣: 但随后我注意到检查点状态大小随着实体ID数量的增加而增加。如果我对检查点的理解是正确的,这是意料之中的,因为运算符状态的数量会增加。但我想弄清楚是否有其他方法可以最小化检查点状态大小。 > 有没有不同的方法来实现这种模式匹配,而不根据实体ID对数据流进行分区?