在Webpack中用url-loader處理圖片和字體的問題
Webpack 是一個(gè)前端資源加載/打包工具。它將根據(jù)模塊的依賴關(guān)系進(jìn)行靜態(tài)分析,然后將這些模塊按照指定的規(guī)則生成對應(yīng)的靜態(tài)資源。
一、處理圖片文件
默認(rèn)webpack無法處理css文件中的url地址 在打包時(shí)會報(bào)錯(cuò)
無論是圖片還是字體庫 只要是url地址 都無法處理
解決方法:
在項(xiàng)目根目錄下輸入cnpm i url-loader file-loader -D
安裝url-loader和file-loader
(url-loader內(nèi)部依賴于file-loader)
然后在配置文件webpack.config.js中進(jìn)行配置loader:
var path=require("path") var htmlWebpackPlugin=require("html-webpack-plugin") module.exports={ entry:path.join(__dirname,"./src/main.js"), output:{ path:path.join(__dirname,"./dist"), filename:"bundle.js" }, // 所有webpack插件的配置節(jié)點(diǎn) plugins:[ new htmlWebpackPlugin({ template:path.join(__dirname,"./src/index.html"), filename:"index.html" }) ], // 配置第三方loader模塊 module:{ rules:[ // 第三方模塊的匹配規(guī)則 {test:/\.css$/,use:["style-loader","css-loader"]}, // 處理css文件的loader {test:/\.jpg|png|gif|bmp|jpeg$/,use:"url-loader"} // 處理圖片url的loader ] } }
使用url-loader打包之后 在頁面中 默認(rèn)會將路徑以base64編碼 減少圖片的二次請求
關(guān)閉默認(rèn)的以base64編碼:
進(jìn)行配置:
給url-loader傳參 格式和網(wǎng)頁url地址傳參完全一致 在url-loader后面加問號傳遞參數(shù)即可
屬性名:limit
設(shè)定一個(gè)大小范圍 當(dāng)圖片大于或等于給定的limit值(單位byte) 則不將url轉(zhuǎn)換為base64格式 反之進(jìn)行轉(zhuǎn)換
格式:{test:/\.jpg|png|gif|bmp|jpeg$/,use:"url-loader?limit=圖片大小"}
如何查看圖片大?。?/p>
右擊圖片 - 屬性
注:若圖片長度大于三位 每三位要以逗號進(jìn)行分隔
496886要寫成496,886
例:{test:/\.jpg|png|gif|bmp|jpeg$/,use:"url-loader?limit=496,886"}
若不進(jìn)行base64的轉(zhuǎn)換
圖片的名稱會默認(rèn)變成一串Hash字符串 以防止圖片重名
可通過配置 不使用默認(rèn)的改名為Hash字符串:
在url-loader后面加上name=[name].[ext]
即可
[name]意為:之前是什么名稱 打包之后也叫什么名稱
[ext]意為:之前是什么后綴名 打包之后也叫什么后綴名
例:{test:/\.jpg|png|gif|bmp|jpeg$/,use:"url-loader?limit=496,886&name=[name].[ext]"}
否則 由于打包后的url引用的直接是文件名.后綴名
的格式 若有重名的圖片 即使不在同一個(gè)文件夾下
也會出現(xiàn)引入的圖片重復(fù)
為避免此問題 需要將名稱改為不重復(fù)的
若既要不改文件名 又要避免圖片重復(fù)問題
可配置為:{test:/\.jpg|png|gif|bmp|jpeg$/,use:"url-loader?limit=496,886&name=[hash:8]-[name].[ext]"}
name=[hash:8]-[name].[ext]的意思是:在圖片前面帶上32位hash值的前8位 中間用短橫杠進(jìn)行連接 具體的hash值長度可根據(jù)需要設(shè)置 但不能超過32 因?yàn)閔ash值最大只有32位
二、處理字體文件
在main.js里引入字體文件:
若通過路徑的形式引入node_modules中相關(guān)的文件 可省略node_modules
若不寫node_modules 默認(rèn)會從node_modules里查找
例:
bootstrap.css文件在node_modules/bootstrap/dist/css下
但在引入的時(shí)候 可以這么寫:
import "bootstrap/dist/css/bootstrap.css"
然后 同樣 在webpack.config.js中進(jìn)行配置即可:
字體文件也是使用url-loader進(jìn)行處理
var path=require("path") var htmlWebpackPlugin=require("html-webpack-plugin") module.exports={ entry:path.join(__dirname,"./src/main.js"), output:{ path:path.join(__dirname,"./dist"), filename:"bundle.js" }, // 所有webpack插件的配置節(jié)點(diǎn) plugins:[ new htmlWebpackPlugin({ template:path.join(__dirname,"./src/index.html"), filename:"index.html" }) ], // 配置第三方loader模塊 module:{ rules:[ // 第三方模塊的匹配規(guī)則 {test:/\.css$/,use:["style-loader","css-loader"]}, {test:/\.jpg|png|gif|bmp|jpeg$/,use:"url-loader?limit=496,886&name=[hash:8]-[name].[ext]"}, {test:/\.ttf|eot|svg|woff|woff2$/,use:"url-loader"} // 處理字體文件的loader ] } }
到此這篇關(guān)于在Webpack中用url-loader處理圖片和字體的文章就介紹到這了,更多相關(guān)在Webpack中用url-loader處理圖片和字體內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Webpack常見靜態(tài)資源處理-模塊加載器(Loaders)+ExtractTextPlugin插件
- 詳解vue-cli與webpack結(jié)合如何處理靜態(tài)資源
- vue-cli與webpack處理靜態(tài)資源的方法及webpack打包的坑
- vue填坑之webpack run build 靜態(tài)資源找不到的解決方法
- 淺談webpack4 圖片處理匯總
- webpack 靜態(tài)資源集中輸出的方法示例
- 淺談 Webpack 如何處理圖片(開發(fā)、打包、優(yōu)化)
- webpack實(shí)現(xiàn)靜態(tài)資源緩存的方法
- vue項(xiàng)目之webpack打包靜態(tài)資源路徑不準(zhǔn)確的問題
- webpack5處理圖片、圖標(biāo)字體、多媒體等靜態(tài)資源文件
相關(guān)文章
動(dòng)態(tài)改變div的z-index屬性的簡單實(shí)例
這篇文章介紹了動(dòng)態(tài)改變div的z-index屬性的簡單實(shí)例,有需要的朋友可以參考一下2013-08-08for 循環(huán)性能比較 提高for循環(huán)的效率
性能有較大的區(qū)別嗎,有必要采取這種寫法嗎2009-03-03談?wù)凧avaScript異步函數(shù)發(fā)展歷程
對大部分JavaScript開發(fā)者而言,async函數(shù)仍是新鮮事物,其發(fā)展經(jīng)歷了漫長的旅程。本文將梳理總結(jié)JavaScript異步函數(shù)的發(fā)展歷程,并表示未來async函數(shù)將成為實(shí)現(xiàn)異步的主要方式。2015-09-09詳解JavaScript正則表達(dá)式之RegExp對象
這篇文章主要介紹了JavaScript正則表達(dá)式之RegExp對象,對RegExp對象的基本使用方法,以及各種方法進(jìn)行整理,感興趣的小伙伴們可以參考一下2015-12-12用js實(shí)現(xiàn)before和after偽類的樣式修改的示例代碼
本篇文章主要介紹了用js實(shí)現(xiàn)before和after偽類的樣式修改的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-09-09深入了解JavaScript中l(wèi)et/var/function的變量提升
這篇文章主要介紹了深入了解JavaScript中l(wèi)et/var/function的變量提升,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-07-07