Webpack 怎么配置多入口应用, 并实现公共依赖的提取?
可以通过以下步骤实现:
1. 配置多入口
在 Webpack 配置中,可以定义多个入口点,每个入口对应一个输出文件。
javascript
const path = require('path');
module.exports = {
entry: {
app1: './src/app1/index.js',
app2: './src/app2/index.js',
},
output: {
filename: '[name].bundle.js', // 使用入口名称生成文件名
path: path.resolve(__dirname, 'dist'),
},
};2. 提取公共依赖
使用 SplitChunksPlugin 来提取公共依赖,确保不同入口点共享的模块只打包一次,减少重复代码。
javascript
module.exports = {
// ...其他配置
optimization: {
splitChunks: {
chunks: 'all', // 从所有块中提取公共模块
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/, // 只提取来自 node_modules 的模块
name: 'vendor', // 公共依赖的名称
chunks: 'all',
},
},
},
},
};3. 处理输出文件
通过以上配置,Webpack 将生成多个入口文件以及一个包含公共依赖的文件。例如:
app1.bundle.jsapp2.bundle.jsvendor.bundle.js(公共依赖)
4. HTML 文件引入
可以使用 HtmlWebpackPlugin 来生成 HTML 文件,自动引入打包生成的 JavaScript 文件。
javascript
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
// ...其他配置
plugins: [
new HtmlWebpackPlugin({
template: './src/app1/index.html',
filename: 'app1.html',
chunks: ['vendor', 'app1'], // 引入公共依赖和 app1
}),
new HtmlWebpackPlugin({
template: './src/app2/index.html',
filename: 'app2.html',
chunks: ['vendor', 'app2'], // 引入公共依赖和 app2
}),
],
};总结
通过上述配置,Webpack 能够有效管理多入口应用,提取公共依赖,确保代码的复用性和加载效率。每个入口点都可以独立打包,并且公共依赖仅打包一次,优化了整体性能。