这是对应的 webpack config
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
entry: {
app: './src/app.js',
admin: './src/admin.js',
},
plugins: [
new HtmlWebpackPlugin({
filename: 'index.html',
chunks: ['app']
}),
new HtmlWebpackPlugin({
filename: 'admin.html',
chunks: ['admin']
})
]
}
但是这样配置会有一个重复打包的问题:假设 app.js 和 admin.js 都引入了 vue.js, 那么 vue.js 的代码既会打包进 app.js,也会打包进 admin.js。我们需要配置 optimization.splitChunks,将共同依赖单独打包成 common.js (HtmlWebpackPlugin 会自动引入 common.js)
参考文章
如何支持无限多页面?
遍历页面文件所在的文件夹,读取所有js文件名
const HtmlWebpackPlugin = require('html-webpack-plugin')
const fs = require('fs')
const path = require('path')
const filenames = fs.readdirSync(./src/pages)
.filter(file => file.endsWith('.js'))
.map(file => path.basename(file, '.js'))
const entries = filename.reduce((result, name) => (
{...result, [name]: `./src/pages/${name}.js`}
), {})
const plugins = filenames.map((name) =>
new HtmlWebpackPlugin({
filename: name + '.html',
chunks: [name]
})
)
module.exports = {
entry: {
...entries
},
plugins: [
...plugins
]
}