亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

詳解html-webpack-plugin用法全解

2024-05-06 16:42:04
字體:
來源:轉載
供稿:網友

html-webpack-plugin 可能用過的 webpack 的童鞋都用過這個 plugin ,就算沒用過可能也聽過。我們在學習webpack的時候,可能經常會看到這樣的一段代碼。

// webpack.config.jsmodule.exports = {  entry: path.resolve(__dirname, './app/index.js'),  output:{    path: path.resolve(__dirname, './build'),    filename: 'bundle.js'  }  ...  plugins: [    new HtmlWebpackPlugin()  ]}

之后在終端輸入 webpack 命令后

webpack

你會神奇的看到在你的 build 文件夾會生成一個 index.html 文件和一個 bundle.js 文件,而且 index.html 文件中自動引用 webpack 生成的 bundle.js 文件。

所有的這些都是 html-webpack-plugin 的功勞。它會自動幫你生成一個 html 文件,并且引用相關的 assets 文件(如 css, js)。

自己在六月第一次接觸前端自動化構建,學習 webpack 和 react 時,曾經簡單使用過這個插件,但也只是用了常見的幾個選項,今天就跟著官方文檔走一走,看看它的所有用法。

title

顧名思義,設置生成的 html 文件的標題。

filename

也沒什么說的,生成 html 文件的文件名。默認為 index.html.

template

根據自己的指定的模板文件來生成特定的 html 文件。這里的模板類型可以是任意你喜歡的模板,可以是 html, jade, ejs, hbs, 等等,但是要注意的是,使用自定義的模板文件時,需要提前安裝對應的 loader, 否則webpack不能正確解析。以 jade 為例。

npm install jade-loader --save-dev
// webpack.config.js...loaders: {  ...  {    test: //.jade$/,    loader: 'jade'  }}plugins: [  new HtmlWebpackPlugin({    ...    jade: 'path/to/yourfile.jade'  })]

最終在build文件夾內會生成一個 yourfile.html 和 bundle.js 文件?,F在我們再回頭來看看之前將的 title 屬性。

如果你既指定了 template 選項,又指定了 title 選項,那么webpack 會選擇哪一個? 事實上,這時候會選擇你指定的模板文件的 title, 即使你的模板文件中未設置 title。

那么 filename 呢,是否也會覆蓋,其實不是,會以指定的 filename 作為文件名。

inject

注入選項。有四個選項值 true, body, head, false.

  1. true:默認值,script標簽位于html文件的 body 底部
  2. body:同 true
  3. head:script 標簽位于 head 標簽內
  4. false:不插入生成的 js 文件,只是單純的生成一個 html 文件
  5. favicon:給生成的 html 文件生成一個 favicon。屬性值為 favicon 文件所在的路徑名。
// webpack.config.js...plugins: [  new HtmlWebpackPlugin({    ...    favicon: 'path/to/yourfile.ico'  }) ]

生成的 html 標簽中會包含這樣一個 link 標簽

<link rel="shortcut icon" href="example.ico" rel="external nofollow" >

同 title 和 filename 一樣,如果在模板文件指定了 favicon,會忽略該屬性。

minify

minify 的作用是對 html 文件進行壓縮,minify 的屬性值是一個壓縮選項或者 false 。默認值為false, 不對生成的 html 文件進行壓縮。來看看這個壓縮選項。

html-webpack-plugin 內部集成了html-minifier ,這個壓縮選項同 html-minify 的壓縮選項完全一樣,
看一個簡單的例子。

// webpack.config.js...plugins: [  new HtmlWebpackPlugin({    ...    minify: {      removeAttributeQuotes: true // 移除屬性的引號    }  })]
<!-- 原html片段 --><div id="example" class="example">test minify</div>
<!-- 生成的html片段 --><div id=example class=example>test minify</div>

hash

hash選項的作用是 給生成的 js 文件一個獨特的 hash 值,該 hash 值是該次 webpack 編譯的 hash 值。默認值為 false 。同樣看一個例子。

// webpack.config.jsplugins: [  new HtmlWebpackPlugin({    ...    hash: true  })]
<script type=text/javascript src=bundle.js?22b9692e22e7be37b57e></script>

執行 webpack 命令后,你會看到你的生成的 html 文件的 script 標簽內引用的 js 文件,是不是有點變化了。

bundle.js 文件后跟的一串 hash 值就是此次 webpack 編譯對應的 hash 值。

$ webpackHash: 22b9692e22e7be37b57eVersion: webpack 1.13.2

cache

默認值是 true。表示只有在內容變化時才生成一個新的文件。

showErrors

showErrors 的作用是,如果 webpack 編譯出現錯誤,webpack會將錯誤信息包裹在一個 pre 標簽內,屬性的默認值為 true ,也就是顯示錯誤信息。

chunks

chunks 選項的作用主要是針對多入口(entry)文件。當你有多個入口文件的時候,對應就會生成多個編譯后的 js 文件。那么 chunks 選項就可以決定是否都使用這些生成的 js 文件。

chunks 默認會在生成的 html 文件中引用所有的 js 文件,當然你也可以指定引入哪些特定的文件。

看一個小例子。

// webpack.config.jsentry: {  index: path.resolve(__dirname, './src/index.js'),  index1: path.resolve(__dirname, './src/index1.js'),  index2: path.resolve(__dirname, './src/index2.js')}...plugins: [  new HtmlWebpackPlugin({    ...    chunks: ['index','index2']  })]

執行 webpack 命令之后,你會看到生成的 index.html 文件中,只引用了 index.js 和 index2.js

...<script type=text/javascript src=index.js></script><script type=text/javascript src=index2.js></script>

而如果沒有指定 chunks 選項,默認會全部引用。

excludeChunks

弄懂了 chunks 之后,excludeChunks 選項也就好理解了,跟 chunks 是相反的,排除掉某些 js 文件。 比如上面的例子,其實等價于下面這一行

...excludeChunks: ['index1.js']

chunksSortMode

這個選項決定了 script 標簽的引用順序。默認有四個選項,'none', 'auto', 'dependency', '{function}'。

  1. 'dependency' 不用說,按照不同文件的依賴關系來排序。
  2. 'auto' 默認值,插件的內置的排序方式,具體順序這里我也不太清楚...
  3. 'none' 無序? 不太清楚...
  4. {function} 提供一個函數?但是函數的參數又是什么? 不太清楚...

如果有使用過這個選項或者知道其具體含義的同學,還請告知一下。。。

xhtml

一個布爾值,默認值是 false ,如果為 true ,則以兼容 xhtml 的模式引用文件。

總結

以上,就總結完了傳入 new HtmlWebpackPlugin() 的選項,了解全部選項的含義后,可以在項目構建時更靈活的使用。希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲a区在线视频| 中文字幕在线亚洲| 久久福利视频网| 日韩av观看网址| 欧美一区二粉嫩精品国产一线天| 国产精品美女无圣光视频| 久久久久国产精品免费| 亚洲一区二区国产| 国产精品揄拍500视频| 欧美自拍视频在线观看| 国产成人高清激情视频在线观看| 91精品视频在线免费观看| 国产丝袜精品第一页| 亚洲欧美中文日韩在线v日本| 久久精品中文字幕电影| 国产精品视频专区| 亚洲综合在线播放| 成人一区二区电影| 国产精品免费久久久久影院| 欧美丰满片xxx777| 性金发美女69hd大尺寸| 欧美另类99xxxxx| 久久精品最新地址| 欧美在线日韩在线| 国产91网红主播在线观看| 国产亚洲欧洲黄色| 亚洲欧美日韩中文在线| 亚洲国产精品悠悠久久琪琪| 国产精品久久久久久久午夜| 亚洲图片制服诱惑| 欧美限制级电影在线观看| 91网站免费观看| 欧美性猛交xxx| 国产精品中文字幕在线观看| 羞羞色国产精品| 亚洲国产一区二区三区四区| 91精品视频观看| 91干在线观看| yw.139尤物在线精品视频| 成人网在线视频| 国产99视频精品免视看7| 成人乱色短篇合集| 国产精品久久久91| 欧美成人合集magnet| 亚洲美女精品成人在线视频| 成人欧美一区二区三区在线湿哒哒| 国产精品久久久久一区二区| 久久久久久久色| 国产精品久久久久免费a∨大胸| 日韩黄在线观看| 日韩精品久久久久久福利| 国产91色在线播放| 欧美成人久久久| 在线视频免费一区二区| 狠狠做深爱婷婷久久综合一区| 亚洲专区在线视频| 国产精品久久久久久久久久久久久久| 亚洲天天在线日亚洲洲精| 成人福利网站在线观看11| 久久国产天堂福利天堂| 97免费在线视频| 波霸ol色综合久久| 久久精品久久久久久国产 免费| 欧美另类极品videosbestfree| 成人免费视频在线观看超级碰| 国产精品pans私拍| 国产亚洲一区二区精品| 亚洲午夜女主播在线直播| 欧美老妇交乱视频| 国产精品视频免费观看www| 欧美日韩国产中文精品字幕自在自线| 国产精品扒开腿做爽爽爽视频| 亚洲国产精品成人va在线观看| 成人有码视频在线播放| 久久亚洲精品一区二区| 精品成人av一区| 国内精品国产三级国产在线专| 日韩在线欧美在线国产在线| 91国产精品电影| 国产精品久久久久久久久久久久久久| 一本色道久久88综合亚洲精品ⅰ| 久久精品国产久精国产一老狼| xvideos成人免费中文版| 国产精品国产三级国产aⅴ浪潮| 亚州国产精品久久久| 国产精品27p| 精品亚洲男同gayvideo网站| 91精品国产自产在线观看永久| 日韩欧美极品在线观看| 亚洲日本中文字幕| 亚洲欧美精品在线| 俺去啦;欧美日韩| 黑人巨大精品欧美一区二区一视频| 欧美成人免费一级人片100| 国产在线精品播放| 5252色成人免费视频| 91久久国产精品91久久性色| 性色av一区二区三区在线观看| 高清欧美一区二区三区| 色先锋久久影院av| 国产精品久久久久久久久| 日韩电影中文字幕在线| 亚洲一区二区三区毛片| 91亚洲精品在线| 国产区精品视频| 日本三级久久久| 欧美又大粗又爽又黄大片视频| 日本高清视频一区| 97超碰蝌蚪网人人做人人爽| 久久99久久99精品免观看粉嫩| 在线观看日韩欧美| 中文字幕国产精品| 97国产精品人人爽人人做| 亚洲国产一区二区三区在线观看| 亚洲欧美日韩爽爽影院| 欧美与黑人午夜性猛交久久久| www国产亚洲精品久久网站| 国产精品电影网站| 97热在线精品视频在线观看| 亚洲电影av在线| 日韩av在线看| 91亚洲国产成人精品性色| 久久久久久久久中文字幕| 久久精品国产欧美亚洲人人爽| 亚洲国产日韩欧美综合久久| 97国产精品久久| 亚洲精品网站在线播放gif| 成人网中文字幕| 98精品国产高清在线xxxx天堂| 日韩禁在线播放| 亚洲精品电影久久久| 国产一区二区三区在线视频| 伦理中文字幕亚洲| 日韩免费在线免费观看| 国产精品视频网站| 精品国产欧美成人夜夜嗨| 欧美日韩国产一区中文午夜| 4p变态网欧美系列| 欧美裸体xxxx极品少妇软件| 性欧美激情精品| 久久理论片午夜琪琪电影网| 一区二区三区四区在线观看视频| 国产日韩欧美在线| 亚洲第一区中文99精品| 中文字幕免费精品一区高清| 欧美乱妇40p| 欧美裸体xxxx极品少妇软件| 国产在线视频91| 狠狠躁夜夜躁人人躁婷婷91| 国产精品女人网站| 亚洲精品在线视频| 国产精品欧美风情| 亚洲国产成人精品一区二区| 欧美中文在线观看国产| 亚洲自拍另类欧美丝袜| 国内揄拍国内精品| 国产亚洲精品久久久优势| 亚洲天堂男人的天堂| 欧美xxxx综合视频| 亚洲视频国产视频| 社区色欧美激情 | 91久久国产精品| 中日韩美女免费视频网站在线观看| 国产精品精品一区二区三区午夜版|