webpack文件分析-webpack插件的html-webpack-plugin

2023-08-29 0 5,132 百度已收录

小邹发现后端开发者仍然使用很多工程化开发,比如webpack+vue+vuex,或者webpack+react+redux等,其实都离不开webpack这个强大的工具。 后续小邹会逐步给大家讲解一些关于webpack的知识点,希望对一些后端开发者有所帮助。

有哪些插件?

插件用于扩展webpack的功能。 各种插件可以让webpack做几乎任何与设置相关的事情。 该插件的配置非常简单。 插件配置项接收一个字段,该字段中的每一项都是要使用的插件的实例。 插件所需的参数是通过构造函数传入的。

举个栗子

使用插件的难点在于插件本身的配置项webpack文件分析,而不是如何将插件引入到webpack中。 几乎所有难以直接在 webpack 中实现的功能都可以通过开源插件来解决。 我们要做的就是根据自己的需要去寻找更多。 找到对应的插件。

HtmlWebpack插件

这个插件曝光率很高,主要有两个功能

title:生成html文件的标题

filename:输出html的文件名

template:html模板所在文件路径

根据自己指定的模板文件在来世创建一个特定的html文件。 这里的模板类型可以是任何你喜欢的模板,可以是html、jade、ejs、hbs等,并且需要注意的是,使用自定义模板文件时,需要提前安装对应的loader,否则webpack将无法正确解析。

如果您在模板中设置的标题和文件名冲突,以您配置的标题和文件名为准。

注入:注入选项。 有四个选项值true、body、head、false。

true:默认值,script标签位于html文件的body顶部 body:script标签位于html文件的body顶部(与true相同) head:script标签位于head标签里面 false:生成的js文件不插入,只是简单生成一个html文件(这个很少用)

webpack文件分析-webpack插件的html-webpack-plugin

favicon:为生成的html文件生成favicon。属性值为favicon文件所在的路径名

minify:minify的功能是压缩html文件,minify的属性值为压缩选项或false。 默认值为 false,生成的 html 文件不被压缩。

下面列出了一些常见的配置:

hash:hash选项的作用是给生成的js文件一个唯一的hash值,这个值就是webpack这次编译的hash值。 默认值为 false。 还看一个反例。

plugins: [
 new HtmlWebpackPlugin({
 hash: true
 })
]

编译打包


执行 webpack 命令后,您会听到生成的 html 文件的 script 标签中引用的 js 文件发生了一些变化。 Bundle.js文件后面的一串哈希值就是本次webpack编译对应的哈希值。

cache:默认为truewebpack文件分析,表示内容改变时生成新文件。

showErrors:这个是我们运行项目时经常用到的。 showErrors的作用是,如果webpack编译出现错误,webpack会将错误信息包裹在pre标签中。 该属性默认值为true,即显示错误信息。

打开此功能可以轻松定位错误

chunks:chunks主要用于多条目文件。 当你有多个入口文件时,然后编译生成多个打包文件,这样chunks就可以选择你要使用哪些js文件

entry: {
 index: path.resolve(__dirname, './src/index.js'),
 devor: path.resolve(__dirname, './src/devor.js'),
 main: path.resolve(__dirname, './src/main.js')
}
plugins: [
 new httpWebpackPlugin({
 chunks: ['index','main']
 })
]

编译后如下:


webpack文件分析-webpack插件的html-webpack-plugin

如果没有指定 chunks 选项,则默认全部引用。

exceptChunks:排除一些js,

entry: {
 index: path.resolve(__dirname, './src/index.js'),
 devor: path.resolve(__dirname, './src/devor.js'),
 main: path.resolve(__dirname, './src/main.js')
}
plugins: [
 new httpWebpackPlugin({
 excludeChunks: ['devor.js']//和的等等效
 })
]

编译后如下:


webpack4 和 html-webpack-plugin

使用最新版本的 html-webpack-plugin 您可能会遇到以下错误:

throw new Error(‘Cyclic dependency’ + nodeRep)

webpack文件分析-webpack插件的html-webpack-plugin

这个bug的原因是循环引用依赖,如果没有这个问题,可以忽略它。

目前的解决方案可以使用alpha版本

npm i –save-dev html-webpack-plugin@next
或者加入chunksSortMode: ‘none’就可以了。

但仔细查看文档发现设置 chunksSortMode:'none' 是有问题的。

该属性将决定块的加载顺序。 如果设置为none,则无法保证块在页面上加载的顺序,并且样式可能会被覆盖。 比如我在app.css上更改了一个第三方库element-ui的样式,并通过加载顺序覆盖了它,但是因为设置为none,所以打包后的结果变成了这样:


app.css先加载,之前写的样式覆盖就会失效,除非使用important或者其他css权重方法来覆盖,但这显然是不合理的。

Vue-cli 也恰好有这个相关问题。 尤玉溪也没有使用@next版本就破解了它。 如果你有兴趣,可以自己研究一下。

其他html-webpack-plugins的配置与之前相同。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 webpack webpack文件分析-webpack插件的html-webpack-plugin https://www.wkzy.net/game/180279.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务