【发布时间】:2026-01-14 12:50:01
【问题描述】:
我正在尝试创建一个 react + babel + webpack 项目。 它可以工作,但 bundle.js 文件有 950KB 大。
bundle.js 总是那么大吗? 如果没有,我该如何减小尺寸?
这是我的 webpack.config.js:
var webpack = require('webpack');
var path = require('path');
var BUILD_DIR = path.resolve(__dirname, 'src/client/public');
var APP_DIR = path.resolve(__dirname, 'src/client/app');
var config = {
entry: APP_DIR + '/index.jsx',
output: {
path: BUILD_DIR,
filename: 'bundle.js'
},
plugins: [
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('production')
}
}),
new webpack.optimize.UglifyJsPlugin({
compressor: {
warnings: false
}
})
],
module : {
loaders : [
{
test : /\.jsx?/,
loader : 'babel',
query:
{
presets: ["es2015", 'react']
}
}
]
}
};
module.exports = config;
【问题讨论】:
-
是的。捆绑包将根据您的依赖关系增长。 webpack 将使用 import 打包所有依赖项。替代方式,您可以在部署时尽可能为依赖项使用 CDN,并使用 babel 将 ES6 转换为 ES5 用于您的反应组件。
-
它也总是取决于你捆绑的库。您还可以尝试在供应商库和您的应用程序代码之间拆分捆绑包。这样,客户端可以缓存供应商,而不必再次下载它一段时间。您还可以使用 Webpack dll 方法,该方法可以在之后拆分并加快编译速度(如果您使用的是 hmr 之类的工具)
标签: javascript reactjs webpack frontend babeljs