用HtmlWebpackPlugin解決靜態指令碼更新之後的快取問題
HtmlWebpackPlugin
問題背景
目前公司一部分H5專案是通過打包成靜態資源然後上傳到伺服器的形式存在的,
那麼在平時的需求修改或者bug修復之後,往往需要使用者清理快取之後才能生效,
否則會使用之前快取下來的指令碼。由於之前這部分工作量看起來不大,
所以就手動修改script
標籤,加一個沒有實際含義的引數,比如?v=0.0.0
,
最近發現實在是不能忍受了,那就來試一試HtmlWebpackPlugin
吧!
Intro
HtmlWebpackPlugin
讓我們更容易地建立一個html
檔案去自動引用webpack
的打包結果。
當我們的打包檔案包含一個隨著打包過程不斷變換的hash字串的時候,這個功能顯得更加好用。
我們可以讓這個外掛生成一個html
檔案,也可以通過lodash templates
來使用自己的模板,
如果願意的話,也能使用自己的loader。
安裝
npm install --save-dev html-webpack-plugin
基本用法
這個外掛會生成一個html5
檔案,
該檔案會通過script
標籤將webpack
打包生成的所有檔案引入。
只需要將這個外掛新增到你的webpack
配置中就可以了。如下所示:
var HtmlWebpackPlugin = require( 'html-webpack-plugin' ); var webpackConfig = { entry : 'index.js', output : { path : 'dist', filename : 'index_bundle.js' }, plugins : [ new HtmlWebpackPlugin() ] };
這會生成一個包含如下內容的檔案:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>webpack App</title>
</head>
<body>
<script src="index_bundle.js"></script>
</body>
</html>
如果你有多個webpack
入口檔案,它們都會被引入到這個檔案中。
如果你還有一些用webpack
打包生成的css
檔案,
它們也會通過link
標籤被引用到這個檔案中。
常用的一些配置項
- title : 生成的
html
檔案的標題 - filename : 生成的
html
檔案的名字,可以生成子目錄,比如assets/admin.html
- hash : true | false ,當值為
true
時, 會在包含的指令碼和css
檔名後面加一個唯一的hash,這對清除快取很有幫助。 - template : 用來生成html的模版檔案,它的值是一個相對於
webpack.config.js
的路徑。
注意 : 如果在webpack.config.js
中設定了output
的path
屬性,
那麼filename
是相對於這個path
計算的,否則是相對於webpack.config.js
計算的。
當指明瞭template
的時候,title
屬性的值將會被忽略。
{ entry : 'index.js', output : { path : 'dist', filename : 'index_bundle.js' }, plugins : [ new HtmlWebpackPlugin( { title : 'My App', filename : 'assets/admin.html' } ) ] }
相關文章
- 程式碼解決快取穿透和快取雪崩問題快取穿透
- 快取問題(四) 快取穿透、快取雪崩、快取併發 解決案例快取穿透
- 快取穿透問題與解決方法快取穿透
- linux配置靜態路由解決網路問題Linux路由
- Apache靜態快取配置Apache快取
- 快取三大問題及解決方案快取
- 快取常見問題及解決方案快取
- Linux CentOS 配置靜態 ip 和 解決 配置後無法聯網的問題LinuxCentOS
- 快應用開發常見問題以及解決方案【持續更新】
- 手摸手教你解決重定向快取問題快取
- redis快取相關問題及解決方案Redis快取
- 快取世界中的三大問題及解決方案快取
- 執行 shell 指令碼 \r 問題解決指令碼
- JQuery中ajax的使用與快取問題的解決方法jQuery快取
- 寶塔部署靜態服務遇到問題與解決
- Linux配置靜態IP解決無法訪問網路問題Linux
- gulp外掛解決瀏覽器快取問題瀏覽器快取
- 前端使用 gulp 解決多專案快取問題前端快取
- 布隆過濾器解決快取穿透問題過濾器快取穿透
- 如何解決快取失效問題快取
- 快取過程存在的三大問題及解決方案快取
- 使用雙快取解決 Canvas clearRect 引起的閃屏問題快取Canvas
- Reddit是如何解決三個臭皮匠的快取首次更新問題?快取
- 快取的問題快取
- Windows解決斷後佔用問題Windows
- 解決 Python 指令碼無法生成結果的問題Python指令碼
- Vue 2.0陣列和物件更新後DOM不更新問題的解決方法。Vue陣列物件
- nginx代理天地圖做快取解決跨域問題Nginx地圖快取跨域
- 詳解nginx代理天地圖做快取解決跨域問題Nginx地圖快取跨域
- 一勞永逸,解決基於 keep-alive 的後臺多級路由快取問題Keep-Alive路由快取
- 阿里一面:關於【快取穿透、快取擊穿、快取雪崩、熱點資料失效】問題的解決方案阿里快取穿透
- 更新macOS Monterey後遇到的各種Bug問題及解決方法Mac
- spingboot使用@Resource注入靜態變數報空指標的問題解決boot變數指標
- 在Laravel中使用Redis鎖解決快取擊穿問題LaravelRedis快取
- PHP+Redis解決實際問題二:快取擊穿PHPRedis快取
- Redis作為快取可能會出現的問題及解決方案Redis快取
- 詳解Nacos 配置中心客戶端配置快取動態更新的原始碼實現客戶端快取原始碼
- 前端靜態資源快取最優解以及max-age的陷阱前端快取
- Glide 快取與解碼複用IDE快取