核心思想
两个vue项目,一次webpack打包,关系用url联系
webpack操作:
1、多个入口
{main1: './user.main.js', main2: './goods.main.js'}
2、多个html插件
注意事项
// 文件名称
filename:filename+'.html'
// 页面模板需要加对应的js脚本,如果不加这行,则每个页面都会引入所有的js脚本
chunk: ['manifest', 'vendor', filename], inject: true
具体步骤
1、src中放两个项目文件夹
分别有index.html/main.js/App.vue,名字需要区分
2、webpack.base.config.js配置多个入口,以数组形式
3、webpack.prod.config.js中处理htmlWebpackPlugins
有几个项目就写几个new htmlWebpackPlugins,可写成函数单独提出
示例写法
function getHtmls(){
let files = [
path.join(__dirname,'..','src/projects/goods/goods.index.html'),
path.join(__dirname,'..','src/projects/user/user.index.html')
]
let filenames = ['goods.index','user.index'];//产出到dist目录下的文件名
let plugins = [];
for(let i=0;i<files.length;i++){
plugins.push(
new HtmlWebpackPlugin({
filename: filenames[i] +'.html',
template: files[i],
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true,
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunks:['manifest','vendor',filenames[i]],
chunksSortMode: 'dependency'
})
);
}
return plugins;
}
4、将函数结果拼接到plugins数组后面
plugins:[...].concat(getHtmls());
5、运行build命令,最终生成如下