Webpack之MPA多页面打包配置(glob)

Posted 飞翔的熊blabla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Webpack之MPA多页面打包配置(glob)相关的知识,希望对你有一定的参考价值。

Webpack配置MPA多页面应用时,需要设置多个入口,并通过html-webpack-plugin配置与之对应的页面。

动态获取入口文件,我们使用glob。

npm i glob --save --dev

glob的用法

var Glob = require("glob");
// pattern : 正则 配置符合条件的文件
// options : 配置参数 一般用来设置文件路径
var fileList = glob.sync(pattern, options)
// fileList: 数组,返回文件绝对路径

我们文件结构如下:

src
 - index.html
 - views
   - home
     - index.js
   - system
     - index.js 
webpack.config.js

文件src下的views目录盛放不同页面,每个页面的入口文件都是index.js

获取所有指定文件:

const fileList = glob.sync(path.join(__dirname,'/src/views/*'))

// fileList = ['**/src/views/home','**/src/views/system'];

上述一行,就是我们最重要的代码,后面只需获取文件名、逐文件配置到entry中,并添加在plugins追加文件模版即可。如下可参考:

var HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');
var glob = require("glob");


const mpaConfig = () => 
	const entry = ;
	const htmlPlugin = [];

	glob.sync(path.join(__dirname,'/src/views/*')).map(file=>
		// 获取文件名称
		const fileName = file.match(/src\\/views\\/(.*)/)[1];
		// 新增入口文件
		entry[fileName] = `$file/index.js`;
		// 新增html文件
		htmlPlugin.push(
			new HtmlWebpackPlugin(
				filename: `$fileName.html`,
				template: `$__dirname/src/index.html`,
				minify: true
			)
		)
	);

	return 
		entry,
		htmlPlugin,
	
;

const  entry, htmlPlugin  = mpaConfig();

module.exports = 
	entry,
	output: 
		path: `$__dirname/dist`,
		filename: '[name]_[chunkhash:8].js'
	,
	mode: 'production',
	plugins: [
		// ...
	].concat(htmlPlugin)
;

可根实际情况调整文件目录,over ~

 

以上是关于Webpack之MPA多页面打包配置(glob)的主要内容,如果未能解决你的问题,请参考以下文章

Webpack构建多页应用Mpa:文件结构和自动化打包

Webpack5多页面打包通用方案

Webpack5多页面打包通用方案

Webpack5多页面打包通用方案

Webpack构建多页应用Mpa:实现基础框架,单独打包样式文件

Webpack实现多页面打包