url-loader
不能转换 base64字符串 的文件,被这个处理(主要用于设置打包后图片路径,以及CDN等);html-webpack-plugin
:用于将已有 html 文件作为模板,生成打包后的 html 文件;clean-webpack-plugin
:用于每次打包前清理dist文件夹CommonsChunkPlugin
:提取 chunks 之间共享的通用模块3、技术难点
3.1、多页面
多页模式是一个难点。
且不考虑共同模块(这里主要指的是html模板,而不是js的模块),光是单独每个入口 js 文件需要搭配一个相对应的 html 文件,就已经是一件很麻烦的事情了。
对于这个问题,需要借助使用 html-webpack-plugin
来实现。
由于之前木有 html-webpack-plugin
的相关内容,这里只讲思路和代码。
第一:多入口则多个html文件
也是核心内容,html-webpack-plugin
只负责生成一个 html 文件。
而多入口显然需要生成多个 html 文件,因此 有多少个入口,就需要在 webpack 的 plugins 里添加多少个 html-webpack-plugin
的实例。
同时,我们还要更改 webpack 的 entry 入口,entry 的值应该是根据入口数量自动生成的对象。
第二:chunks特性实现按需加载
通过配置 html-webpack-plugin
的 options.chunks
,可以让我们实现让 login.html
只加载 login/index.js
,而 userInfo.html
只加载 userInfo/index.js
(注:由于以 entry 的 key 作为寻找出口文件的根据,因此打包后带 hash 的文件名不影响匹配);
注意,这个实现的机制,是通过 options.chunk
的值,去匹配 webpack.config.js
的 entry
对象的 key
。
因为一个入口文件对应一个出口文件,所以这里会去拿入口文件对应的出口文件,将其加到 html 文件里。
第三:template自定义作为模板的 html 文件
options.template
可以自定义该实例以哪个 html 文件作为模板。
第四:filename
options.filename
可以自定义生成的 html 文件输出为什么样的文件名。
第五:管理多入口
已知:
一个 html-webpack-plugin
实例具有以下功能:
- 生成一个 html 文件(一);
- 决定自己引入哪个 js 文件(二)(记得,webpack只负责打包js文件,不负责生成 html 文件。生成实例是依靠这个 plugins);
- 决定自己以哪个 html 文件作为模板(三);
- 决定自己打包后的目录和文件名(四);
我们通过webpack打包后,一个入口 js 文件会对应一个出口 js 文件;
而每个入口 js 文件,都对应一个 html 模板文件;
因此每个 html 模板文件,都知道自己对应哪个出口 js 文件;
所以以上是实现多入口的原理。
代码:
多入口管理文件:
config/entry.json
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。