Webpack 构建项目(三)

第三节主要对应视频教程上,针对于html-webpack-plugin这个的详细讲解,对此做一下笔记。
先在webpack.config.js 声明一个变量。

var htmlWebpackPlugin = require('html-webpack-plugin');

然后就在plugins进行属性的设置 如title

plugins:[
    new htmlWebpackPlugin({
      filename:'index.html',
      template:'index.html',//此处可以指定一个路径 如  src/temp/index.html
      inject:'head',
      title:'webpack is bad', // title 属性
      date:new Date()   //date 属性
    })
  ]

接着就要在模板文件中使用这些属性。这种写法视频中提到的是模板文件的写法

(1)<%=  %> 直接取值
(2)<%   %> 运行JS代码
<title><%= htmlWebpackPlugin.options.title %></title>   
or
<%= htmlWebpackPlugin.options.date %>

接下来开始对htmlWebpackPlugin 中的属性进行遍历,查看我们能够从htmlWebpackPlugin取到的信息。

<% for (var key in htmlWebpackPlugin) {%>
      <%=key %>
<% } %>

最终生成 files、options 这两个结果。我们在继续对这两个Key进行遍历

<% for (var key in htmlWebpackPlugin.files) {%>
      <%=key %> : <%= JSON.stringify(htmlWebpackPlugin.files[key]) %>
 <!-- 对遍历出来的结果进行字符串化,使用JSON.stringify()-->
<% } %>

<% for (var key in htmlWebpackPlugin.options) {%>
      <%=key %> : <%= JSON.stringify(htmlWebpackPlugin.options[key]) %>
<% } %>

结果如下所示 其中,对options的遍历结果中我们已经使用了其中的inject filename 等。更多的可以去官网看html-webpack-plugin options 属性详解

<body>
    <p>Hello World</p>
    <p>Hello YYY</p>
    Mon Dec 11 2017 22:36:03 GMT+0800 (CST)
    

      publicPath : ""
    
      chunks : {"main":{"size":27,"entry":"js/main.js","hash":"f0883f49cc458b4e9f68","css":[]},"a":{"size":20,"entry":"js/a.js","hash":"b132e09a19bc030c1a4a","css":[]}}
    
      js : ["js/main.js","js/a.js"]
    
      css : []
    
      manifest : 
    

    <!--对options的遍历-->
      template : "/Users/wuxinbo/Desktop/前端/个人练习/WebpackDemo/muke-Webpack/node_modules/html-webpack-plugin/lib/loader.js!/Users/wuxinbo/Desktop/前端/个人练习/WebpackDemo/muke-Webpack/index.html"
    
      filename : "index.html"  
    
      hash : false
    
      inject : "head"
    
      compile : true
    
      favicon : false
    
      minify : false
    
      cache : true
    
      showErrors : true
    
      chunks : "all"
    
      excludeChunks : []
    
      title : "webpack is bad"
    
      xhtml : false
    
      date : "2017-12-11T14:36:03.540Z"
    
  </body>

在得知这些属性后就可以进行使用,可以在模板文件中对打包好的文件进行引用。如下所示:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title><%= htmlWebpackPlugin.options.title %></title>
    <!-- 直接引用chunks中的内容 -->
    <script type="text/javascript" src="<%= htmlWebpackPlugin.files.chunks.main.entry %>"></script>
  </head>
  <body>
    <p>Hello World</p>
    <p>Hello YYY</p>
    <%= htmlWebpackPlugin.options.date %>
    <!-- 直接引用chunks中的内容 -->
    <script type="text/javascript" src="<%= htmlWebpackPlugin.files.chunks.a.entry%>"></script>

  </body>
</html>

同时也需要对webpack.config.js中的 plugins的 inject属性进行设置,官网对inject描述:当inject的值为 true 或者'body' 时,所有JS源都会放置在body标签内,值为'head',就把所有JS源都放置在head标签内。如设置为false,则不对其进行定义。由于以上代码一个放进了head,一个放进了body,那么就需要设置为false.

关于pubulicPath 相当于一个占位符。当设置好参数后,使所有引用的相对路径变为绝对路径。

output:{
    path:path.resolve(__dirname,'dist'),
    filename:'js/[name].js',
    publicPath:'https://cdn.com/'
  }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 12,649评论 7 110
  • 原文http://www.cnblogs.com/libin-1/p/6596810.html 版本号 vue-c...
    tengrl阅读 3,599评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,497评论 18 139
  • Webpack学习总结 此文只是自己学习webpack的一些总结,方便自己查阅,阅读不变,非常抱歉!! 下载安装:...
    Lxs_597阅读 922评论 0 0
  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,121评论 7 35