我创建了一个非常基本的应用程序,它只从url加载json然后显示它。没有可以分割的块,事情变得微不足道,但我仍然得到消息:
“资产大小限制中的警告:以下资产超过建议的大小限制(244 KiB)。这可能会影响Web性能。资产:output_react.js(245 KiB)”。
模式生产开启(脚本缩小,开发期间超过1mb),app基本上没有做任何事情,webpack已经报告它太大了?为什么?我该如何解决这个问题? (style.scss也是空的,只有150个字符)。
我的代码:App.js
import React, {Component} from 'react';
require('../styles/style.scss');
class App extends Component {
constructor(){
super();
this.state = {
orders : []
}
this.getOrders();
}
getOrders (){
fetch('http://localhost/supplier/get_orders.php')
.then(results =>{
return results.json();
}).then(data =>{
let orders = data.orders.map((order) => {
return(
<div key={order.order_index} className={order.status}>
{order.sizes}
</div>
)
})
this.setState({orders: orders})
})
}
render() {
return <div className="orders_container">{this.state.orders}</div> ;
}
}
export default App;
我的webpack.config.js:
const webpack = require('webpack')
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
entry: './src/index.js',
output: {
path: path.join(__dirname, '/dist'),
filename: 'output_react.js'
},
module: {
rules: [
{
test: /\.js$/,
exclude: [/node_modules/, /git/],
use: {
loader: 'babel-loader'
}
},
{
test: /\.scss$/,
exclude: /git/,
use: [
"style-loader", // creates style nodes from JS strings
"css-loader", // translates CSS into CommonJS
"sass-loader" // compiles Sass to CSS, using Node Sass by default
]
},
{
test: /\.css$/,
exclude: /git/,
use: [
"style-loader", // creates style nodes from JS strings
"css-loader" // translates CSS into CommonJS
]
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html'
})
],
watch: true
}
好吧,你必须将min文件分成块。只需根据路由进行延迟加载并将其划分为块。
谢谢@hazardous。我已经完成了stats.json,这就是webpack-bundle-analyzer显示的内容:
所以似乎引导程序就是问题所在。我实际上认为这可能是原因,所以我只删除了导入'bootstrap / dist / css / bootstrap.min.css';来自我的index.js,这只减小了40kb的大小。
但是现在(一旦我看到引导程序确实是问题)我也从生产依赖项中删除了引导程序(在npm的package.json中) - 之后它就像一个魅力,“仅”100kb的bundle.js,考虑到它包括所有的React,这是可以的。
非常感谢@hazardous,你的答案解决了这个问题。