以下是束分析器的输出:
正如你所看到的react-dom包一样,jquery和mobx都在shell包和vendor包中,有没有可能只把它们放在vendor包中呢?
UPDATE以下是配置文件:
entry: {
shell: './src/shell.ts',
vendor: [
'jquery',
'react',
'react-dom',
'react-router',
'mobx',
'mobx-react',
'toastr',
'styled-components',
],
},
output: {
path: __dirname + '/dist',
filename: '[name]bundle.js?[hash:8]',
publicPath: '/',
},
devtool: PROD ? false : 'source-map',
resolve: {
extensions: ['.webpack.js', '.web.js', '.ts', '.tsx', '.js', '.json'],
modules: ['node_modules'],
},
optimization: {
minimize: !!PROD,
},
plugins: [
new CleanWebpackPlugin(['dist']),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
}),
new ExtractTextPlugin('[name].css?[hash:8]', {
allChunks: true,
disable: !PROD,
}),
new HtmlWebpackPlugin({
chunksSortMode: 'dependency',
template: './src/index.tpl.html',
}),
new BundleAnalyzerPlugin(),
],
2条答案
按热度按时间nlejzf6q1#
您可以使用
splitChunks
优化webpack设置将来自node_modules
文件夹的所有供应商代码拆分到单个vender
捆绑包文件中。首先,从您的
entry
中删除vendor
。然后,将以下代码添加到
config
文件中:epggiuax2#
您使用
entry
手动拆分代码,e.g.存在一些缺陷:如果条目块之间存在任何重复的模块,则它们将被包括在两个束中。
您可以使用
Entry dependencies
或SplitChunksPlugin
来阻止它。下面是
Entry dependencies
的示例:由于您将在同一个HTML页面中使用两个入口点,请记住启用
optimization.runtimeChunk: 'single'
。有详细的解释代码拆分指南的webpack,你可以阅读那里了。