webpack5處理圖片、圖標(biāo)字體、多媒體等靜態(tài)資源文件
在 webpack5 中內(nèi)置了 file-loader、url-loader、raw-loader, 可以直接通過配置實(shí)現(xiàn)常用功能。官網(wǎng)
一、搭建 webpack 基礎(chǔ)環(huán)境
初始化環(huán)境
npm init -y
安裝環(huán)境依賴
npm install webpack cross-env webpack-cli -D
在 package.json 中修改 scripts
"scripts": { "dev": "cross-env NODE_ENV=development webpack --config ./webpack.config.js --watch --progress --color ", "build": "cross-env NODE_ENV=production webpack --config ./webpack.config.js --progress --color " },
新建入口文件 src/index.js
consle.log("hello world");
創(chuàng)建 webpack.config.js 配置文件
var path = require("path"); module.exports = { entry: { app: "./src/index.js", }, output: { path: path.resolve(__dirname, "dist"), filename: "[name]-budle.js", clean: true, }, mode: process.env.NODE_ENV, module: { rules: [], }, };
打包測試
npm run dev npm run build
二、webpack5 處理圖片資源
安裝依賴
npm install style-loader css-loader -D
修改 webpack.config.js 配置文件
var path = require("path"); module.exports = { entry: { app: "./src/index.js", }, output: { path: path.resolve(__dirname, "dist"), filename: "[name]-budle.js", clean: true, }, mode: process.env.NODE_ENV, module: { rules: [ { test: /\.css$/, use: [ { loader: "style-loader", }, { loader: "css-loader", }, ], }, ], }, };
新建 src/assets/css/index.css
#app div:nth-child(1) { width: 50px; height: 50px; background: url("../images/01.png") no-repeat; background-size: 100% 100%; } #app div:nth-child(2) { width: 50px; height: 50px; background: url("../images/02.png") no-repeat; background-size: 100% 100%; } #app div:nth-child(3) { width: 50px; height: 50px; background: url("../images/03.png") no-repeat; background-size: 100% 100%; }
新建入口文件 src/index.js
import "./assets/css/index.css";
新建 src/index.html 模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Document</title> <script src="../dist/app-budle.js"></script> </head> <body> <div id="app"> <div></div> <div></div> <div></div> </div> </body> </html>
打包編譯
npm run build
在瀏覽器打開 src/index.html,查看結(jié)果
發(fā)現(xiàn)圖片可以正常渲染,在 dist 中可查看到打包后的圖片
配置打包輸出路徑,并配置靜態(tài)資源轉(zhuǎn) base64 的 maxSize,修改 webpack.config.js 配置文件
設(shè)置 type: "asset" ,當(dāng)指定靜態(tài)資源打包路徑時(shí),parser.dataUrlCondition.maxSize: 8 * 1024 會(huì)轉(zhuǎn) base64 自動(dòng)生效,需手動(dòng)配置范圍
var path = require("path"); module.exports = { entry: { app: "./src/index.js", }, output: { path: path.resolve(__dirname, "dist"), filename: "[name]-budle.js", clean: true, }, mode: process.env.NODE_ENV, module: { rules: [ { test: /\.css$/i, use: [ { loader: "style-loader", options: { esModule: false, }, }, { loader: "css-loader", }, ], }, { test: /\.(png|jpe?g|gif|svg)$/i, type: "asset", parser: { dataUrlCondition: { maxSize: 1 * 1024, // 小于1kb轉(zhuǎn)base64,減少請(qǐng)求次數(shù) }, }, generator: { filename: "static/images/[hash:10][ext][query]", // 指定打包路徑和文件名 }, }, ], }, };
三、webpack5 處理圖標(biāo)字體資源
修改 webpack.config.js
設(shè)置 asset/resource ,靜態(tài)資源文件打包時(shí)不會(huì)轉(zhuǎn) base64
var path = require("path"); module.exports = { entry: { app: "./src/index.js", }, output: { path: path.resolve(__dirname, "dist"), filename: "[name]-budle.js", clean: true, }, mode: process.env.NODE_ENV, module: { rules: [ { test: /\.css$/i, use: [ { loader: "style-loader", options: { esModule: false, }, }, { loader: "css-loader", }, ], }, { test: /\.(png|jpe?g|gif|svg)$/i, type: "asset", parser: { dataUrlCondition: { maxSize: 1 * 1024, // 小于1kb轉(zhuǎn)base64,減少請(qǐng)求次數(shù) }, }, generator: { filename: "static/images/[hash:10][ext][query]", // 指定打包路徑和文件名 }, }, { test: /\.(ttf|woff|woff2?)$/i, type: "asset/resource", generator: { filename: "static/iconfont/[hash:10][ext][query]", }, }, ], }, };
四、webpack5 處理視頻資源
修改 webpack.config.js
設(shè)置asset/resource ,靜態(tài)資源文件打包時(shí)不會(huì)轉(zhuǎn) base64
var path = require("path"); module.exports = { entry: { app: "./src/index.js", }, output: { path: path.resolve(__dirname, "dist"), filename: "[name]-budle.js", clean: true, }, mode: process.env.NODE_ENV, module: { rules: [ { test: /\.css$/i, use: [ { loader: "style-loader", options: { esModule: false, }, }, { loader: "css-loader", }, ], }, { test: /\.(png|jpe?g|gif|svg)$/i, type: "asset", parser: { dataUrlCondition: { maxSize: 1 * 1024, // 小于1kb轉(zhuǎn)base64,減少請(qǐng)求次數(shù) }, }, generator: { filename: "static/images/[hash:10][ext][query]", }, }, { test: /\.(ttf|woff|woff2?)$/i, type: "asset/resource", generator: { filename: "static/iconfont/[hash:10][ext][query]", }, }, { test: /\.(map3|map4|avi)$/i, type: "asset/resource", generator: { filename: "static/media/[hash:10][ext][query]", }, }, ], }, };
到此這篇關(guān)于webpack5處理圖片、圖標(biāo)字體、多媒體等靜態(tài)資源文件的文章就介紹到這了,更多相關(guān)webpack5處理靜態(tài)資源文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(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中用url-loader處理圖片和字體的問題
- webpack實(shí)現(xiàn)靜態(tài)資源緩存的方法
- vue項(xiàng)目之webpack打包靜態(tài)資源路徑不準(zhǔn)確的問題
相關(guān)文章
面試判斷元素是否在可視區(qū)域中IntersectionObserver詳解
這篇文章主要為大家介紹了判斷元素是否在可視區(qū)域中IntersectionObserver面試詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03在VS?Code中使用Snippet?Craft擴(kuò)展提高編碼效率的過程詳解
這篇文章主要介紹了在VS?Code中使用Snippet?Craft擴(kuò)展提高編碼效率,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08javascript權(quán)威指南 學(xué)習(xí)筆記之變量作用域分享
最近一直在看《javascript權(quán)威指南 第五版》,變量作用域這一章,看得真的有點(diǎn)累。不過,收獲還是多多。2011-09-09一文詳解JavaScript中的replace()函數(shù)
replace方法的語法是stringObj.replace(rgExp, replaceText),其中stringObj是字符串(string),下面這篇文章主要給大家介紹了關(guān)于JavaScript中replace()函數(shù)的相關(guān)資料,需要的朋友可以參考下2023-01-01javascript檢測瀏覽器的縮放狀態(tài)實(shí)現(xiàn)代碼
這篇文章主要介紹了javascript檢測瀏覽器的縮放狀態(tài)實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-09-09JavaScript中使用正則匹配多條,且獲取每條中的分組數(shù)據(jù)
該問題在使用Ajax遠(yuǎn)程獲取某網(wǎng)頁數(shù)據(jù)時(shí)經(jīng)常遇見 如果目標(biāo)頁面是XML,就好辦了,實(shí)用XMLDOM可以很輕松完成任務(wù)。2010-11-11JavaScript實(shí)現(xiàn)全選或反選功能
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)全選或反選功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08鍵盤上一張下一張兼容IE/google/firefox等瀏覽器
鍵盤上一張下一張的效果想必大家都有見到過吧,本文為大家介紹的這個(gè)兼容IE,google,firefox等主流瀏覽器2014-01-01