使用前第一步:npm install 安装html-webpack-plugin --save--dev || --save  (tips:--save--dev跟--save最大的区别就是--dev安装是为了仅仅在develop开发环境所依赖的,线上运行并不需要安装也能运行的依赖),献上webpack中文文档地址:=》http://www.jqhtml.com/7626.html

next=>安装完之后需要在webpack配置文件webpack.base.config中引用该依赖,exp:var htmlWebpackPlugin=required ('html-webpack-plugin'),引入之后可以在配置中的plugins属性中new一个htmlWebpackPlugin({})后使用命令npm run  webpack会发现生成了一个html模板,证明插件使用成功了。

    接下来便是webpack配置中的plugins选项new 出来的htmlWebpackPlugin的参数介绍了:

      1):可以通过template属性指定webpack打包后的输出模板文件:=》template:index.html这样子便会把入口的Index.html文件单做模板来打包输出。

      2):可以通过filename属性指定输出文件名:=》filename:'index-[hash].html'指定文件名index+哈希值。(tips:chunkHash跟hash的最大区别是hash代表compliation的哈希值,而compliation对象会      在任何一个要被打包的文件被改动后重新生成,也就是说单独修改一个文件会影响整个文件的compliation对象的重构,这样子打包后原来的未经改动的文件缓存也就会被新生成 的打包文件所覆       盖,而chunkHash则会是根据具体模块文件的内容计算所得的hash值,任何一个文件的更改只会影响到它本身的哈希值,并不会对其它文件哈希值造成影响,两者是独立的。本内容参见          http://www.cnblogs.com/ihardcoder/p/5623411.html)。

      3):可以通过inject属性指定打包输出的模板内容嵌入的位置:=》inject:'body'这样子便会把输出 的内容嵌入到body标签内

      4):可以通过title属性可自定义标题名,并在模板中通过<%= htmlWebpackPlugin.options.title%>来引用到title的值并在打包后的文件中输出。

      5):data属性同上。

      6):可以在模板文件中使用<% for (var key in htmlWebpackPlugin) {%><%=key%><%}%>在打包文件中输出failes跟options两个对象,同时也可以以同样方式分别输出两个对象的所有值。

      7):可以在模板文件中使用<script src="<%=htmlWebpackPlugin.chunks.main.entry%>"></script>在打包文件中引用入口entry中的main.js文件

      8):可以通过minify属性对输出后的文件进行压缩:=》removeComments:true//删除备注------其它minify属性参考webpack文档

      9):多页面进行打包时需要在entry中指定多个html页面目录并创建多个对应的htmlWebpackPlugin,并可自定义其它属性名称来达到通过输出模板文件对该属性进行引用的目的

      10):多页面打包时可以通过chunks属性指定需要引入的entry中的js文件路径

      11):多页面打包时可以通过excludeChunks属性排除该属性指定的entry中的js文件路径

      12):webpack的compilation对象中的assets[]方法接收去除publicPath(线上地址)后的文件路径,并通过source()方法将公用文件main直接写入到打包输出后的html文件中,这样可以大大提高          wepack打包效率=》<%=compilation.assets[htmlWebpackPlugin.files.chunks.main.entry.substr(htmlWebpackPlugin.files.publicPath.length)].source%>,其它外链的js文件可以在模板文件中循        环除了公用文件main.js的所有files对象中的chunk对象的每一个js文件名对应的entry目录,并通过script标签引入文件:

          <%for(var k in htmlWebpackPlugin.files.chunks){%>

            <%if(k!='main'){%>

              <script src="<%=htmlWebpackPlugin.files.chunks[k].entry%>" type="text/javascript"></script>

            <%}%>

          <%}%>

        最后run 一次webpack就可以看到嵌入的main的内容以及外链的其它js文件

        以上就是htmlWebpackPlugin使用过程

            

      

      

  

    

html-webpack-plugin的使用的更多相关文章

  1. 如何开发webpack plugin

    继上回介绍了如何开发webpack loader 之后.趁热打铁,来继续看下webpack另一个核心组成:plugin. 下面也和loader一样,让我们一起从基本的官方文档着手看起. loader和 ...

  2. 简单webpack plugin 开发

    重要是学习下怎么开发webpack plugin,同时记录下 插件模型 webpack 是一个插件,可以是javascript class ,或者具名 class 定义apply 方法 指定一个绑定到 ...

  3. Webpack Plugin

    [Webpack Plugin] Since Loaders only execute transforms on a per-file basis, plugins are most commonl ...

  4. 案例实战之如何写一个webpack plugin

    案例实战之如何写一个webpack plugin 1.写一个生成打包文件目录的file.md文件 // 生成一个目录项目目录的文件夹 class FileListPlugin { constructo ...

  5. 揭秘webpack plugin

    前言 Plugin(插件) 是 webpack 生态的的一个关键部分.它为社区提供了一种强大的方法来扩展 webpack 和开发 webpack 的编译过程.这篇文章将尝试探索 webpack plu ...

  6. YYDS: Webpack Plugin开发

    目录 导读 一.cdn常规使用 二.开发一个webpack plugin 三.cdn优化插件实现 1.创建一个具名 JavaScript 函数(使用ES6的class实现) 2.在它的原型上定义 ap ...

  7. [转] webpack之plugin内部运行机制

    简介 webpack作为当前最为流行的模块打包工具,几乎所有的主流前端开发框架(React.Vue等)都会将其作为默认的模块加载和打包工具.通过简单的配置项,使用各种相关的loader和plugin, ...

  8. 使用Webpack加速Vue.js应用的4种方式

    Webpack是开发Vue.js单页应用程序的重要工具. 通过管理复杂的构建步骤,你可以更轻松地开发工作流程,并优化应用程序的大小和性能. 其中介绍下面四种方式: 单个文件组件 优化Vue构建 浏览器 ...

  9. 翻译 | 关键CSS和Webpack: 减少阻塞渲染的CSS的自动化解决方案

    原文地址: Critical CSS and Webpack: Automatically Minimize Render-Blocking CSS 原文作者: Anthony Gore 译者: 蜗牛 ...

  10. webpack的世界

    本文也是多次学习webapck积累下来的知识点,一直在云笔记里. webpack的原理 webpack构建流程 从启动webpack构建到输出结果经历了一系列过程,它们是: 解析webpack配置参数 ...

随机推荐

  1. Bootstrap框架的了解和使用之栅格系统

       前    言 Bootstrap Bootstrap 包含了一个响应式的.移动设备优先的.不固定的网格系统,可以随着设备或视口大小的增加而适当地扩展到 12 列.它包含了用于简单的布局选项的预定 ...

  2. java GUI编程一

    一.AWT介绍 所有的可以显示出来的图形元素都称为Component,Component代表了所有的可见的图形元素,Component里面有一种比较特殊的图形元素叫Container,Containe ...

  3. 关于API,前后端分离

    之前再开放新型web项目和app时,遇到了和前后端交互的问题.总所周知的是,web前后端交接时,最重要的交互方式的接口的制定. 而关于接口的规定,衍生出了一大堆问题,第一是关于空值的制定,是不输出呢? ...

  4. DotNetCore跨平台~linux上还原自主nuget包需要注意的问题

    问题的产生的背景 由于我们使用了jenkins进行部署(jenkins~集群分发功能和职责处理),而对于.net core项目来说又是跨平台的,所以对它的项目拉取,包的还原,项目的编译和项目的发布都是 ...

  5. [js高手之路] html5新增的定时器requestAnimationFrame实战进度条

    在requestAnimationFrame出现之前,我们一般都用setTimeout和setInterval,那么html5为什么新增一个requestAnimationFrame,他的出现是为了解 ...

  6. U盘中毒无限蓝屏重启的解决办法

    开门见山,这个帖子只针对U盘中毒导致的以下两种症状: 1.win10系统无法进入并且要求初始化,卸载所有第三方应用 2.win7系统无限蓝屏重启): 其他的硬件故障不在本次讨论范围之内. 说明以下.上 ...

  7. 运行Chromium浏览器缺少google api密钥无法登录谷歌账号的解决办法

    管理员身份运行CMD,然后依次输入以下三行内容: setx GOOGLE_API_KEY "AIzaSyAUoSnO_8k-3D4-fOp-CFopA_NQAkoVCLw"setx ...

  8. SQL server2005学习笔记(一)数据库的基本知识、基本操作(分离、脱机、收缩、备份、还原、附加)和基本语法

    在软件测试中,数据库是必备知识,假期闲里偷忙,整理了一点学习笔记,共同探讨. 阅读目录 基本知识 数据库发展史 数据库名词 SQL组成 基本操作 登录数据库操作 数据库远程连接操作 数据库分离操作 数 ...

  9. 使用路由延迟加载 Angular 模块

    使用路由延迟加载 Angular 模块 Angular 非常模块化,模块化的一个非常有用的特性就是模块作为延迟加载点.延迟加载意味着可以在后台加载一个模块和其包含的所有组件等资源.这样 Angular ...

  10. 【微信小程序】调用wx.request接口需要注意的问题

    写在前面 之前写了一篇<微信小程序实现各种特效实例>,上次的小程序的项目我负责大部分前端后台接口的对接,然后学长帮我改了一些问题.总的来说,收获了不少吧! 现在项目已经完成,还是要陆陆续续 ...