webpack 多页面 html,html-webpack-plugin 多页面应用打包

有些时候我们并不想用框架,就是传统的多页面应用,而html-webpack-plugin对此的支持并不好,所以需要我们多做一些工作。

1.构造webpack的entry对象

首先public/pages下每个子目录的都包含一个js、html、scss文件,其中所有js文件都是入口,所以我们使glob模块,找到所有js文件的路径和名称,进而构造出webpack的entry对象。const glob = require('glob');

let entry = function (){

let entry = {};

glob.sync('./public/pages/**/*.js').map(e=>{

const name=e.split('/')[3].replace('.js','');

if(name)entry[name]=e;

});

return entry;

}();

2.构造HtmlWebpackPlugin对象

由于HtmlWebpackPlugin不支持类似[name]的语法,所以我们必须为每个页面都构造一个HtmlWebpackPlugin对象。这里我们仍然利用entry对象获得文件名称和路径。最后我们把得到的结果合并到plugins数组中。let HtmlWebpack=[];

Object.entries(entry).forEach(e=> {

if(e[0]!=='global'){

HtmlWebpack.push(new HtmlWebpackPlugin({

chunks: ['global', e[0]],

filename: `${e[0]}.html`,

template: e[1].replace('.js','.html')

}));

}

});

plugins:[].concat(HtmlWebpack);

此外html-webpack-plugin也能够解析ejs等模版文件,所以我们也可以把公共模块单独抽出来,然后以模版形式导入,便于维护。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值