處理字體圖標資源
1. 下載字體圖標文件
- 打開阿里巴巴矢量圖標庫open in new window
- 選擇想要的圖標添加到購物車,統一下載到本地
2. 添加字體圖標資源
-
src/fonts/iconfont.ttf
-
src/fonts/iconfont.woff
-
src/fonts/iconfont.woff2
-
src/css/iconfont.css
- 注意字體文件路徑需要修改
-
src/main.js
import { add } from "./math";
import count from "./js/count";
import sum from "./js/sum";
// 引入資源,Webpack才會對其打包
import "./css/iconfont.css";
import "./css/index.css";
import "./less/index.less";
import "./sass/index.sass";
import "./sass/index.scss";
import "./styl/index.styl";console.log(count(2, 1));
console.log(sum(1, 2, 3, 4));
- public/index.html
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>webpack5</title></head><body><h1>Hello Webpack5</h1><div class="box1"></div><div class="box2"></div><div class="box3"></div><div class="box4"></div><div class="box5"></div><!-- 使用字體圖標 --><i class="iconfont icon-arrow-down"></i><i class="iconfont icon-ashbin"></i><i class="iconfont icon-browse"></i><script src="../dist/static/js/main.js"></script></body>
</html>
3. 配置
const path = require("path");module.exports = {entry: "./src/main.js",output: {path: path.resolve(__dirname, "dist"),filename: "static/js/main.js", // 將 js 文件輸出到 static/js 目錄中clean: true, // 自動將上次打包目錄資源清空},module: {rules: [{// 用來匹配 .css 結尾的文件test: /.css$/,// use 數組里面 Loader 執行順序是從右到左use: ["style-loader", "css-loader"],},{test: /.less$/,use: ["style-loader", "css-loader", "less-loader"],},{test: /.s[ac]ss$/,use: ["style-loader", "css-loader", "sass-loader"],},{test: /.styl$/,use: ["style-loader", "css-loader", "stylus-loader"],},{test: /.(png|jpe?g|gif|webp)$/,type: "asset",parser: {dataUrlCondition: {maxSize: 10 * 1024, // 小于10kb的圖片會被base64處理},},generator: {// 將圖片文件輸出到 static/imgs 目錄中// 將圖片文件命名 [hash:8][ext][query]// [hash:8]: hash值取8位// [ext]: 使用之前的文件擴展名// [query]: 添加之前的query參數filename: "static/imgs/[hash:8][ext][query]",},},{test: /.(ttf|woff2?)$/,type: "asset/resource",generator: {filename: "static/media/[hash:8][ext][query]",},},],},plugins: [],mode: "development",
};
type: "asset/resource"
和type: "asset"
的區別:
type: "asset/resource"
?相當于file-loader
, 將文件轉化成 Webpack 能識別的資源,其他不做處理type: "asset"
?相當于url-loader
, 將文件轉化成 Webpack 能識別的資源,同時小于某個大小的資源會處理成 data URI 形式(Data URI詳細介紹_datauri-CSDN博客)
4. 運行指令
npx webpack
打開 index.html 頁面查看效果
處理音視頻等資源
1. 配置
const path = require("path");module.exports = {entry: "./src/main.js",output: {path: path.resolve(__dirname, "dist"),filename: "static/js/main.js", // 將 js 文件輸出到 static/js 目錄中clean: true, // 自動將上次打包目錄資源清空},module: {rules: [{// 用來匹配 .css 結尾的文件test: /.css$/,// use 數組里面 Loader 執行順序是從右到左use: ["style-loader", "css-loader"],},{test: /.less$/,use: ["style-loader", "css-loader", "less-loader"],},{test: /.s[ac]ss$/,use: ["style-loader", "css-loader", "sass-loader"],},{test: /.styl$/,use: ["style-loader", "css-loader", "stylus-loader"],},{test: /.(png|jpe?g|gif|webp)$/,type: "asset",parser: {dataUrlCondition: {maxSize: 10 * 1024, // 小于10kb的圖片會被base64處理},},generator: {// 將圖片文件輸出到 static/imgs 目錄中// 將圖片文件命名 [hash:8][ext][query]// [hash:8]: hash值取8位// [ext]: 使用之前的文件擴展名// [query]: 添加之前的query參數filename: "static/imgs/[hash:8][ext][query]",},},{test: /.(ttf|woff2?|map4|map3|avi)$/,type: "asset/resource",generator: {filename: "static/media/[hash:8][ext][query]",},},],},plugins: [],mode: "development",
};
就是在處理字體圖標資源基礎上增加其他文件類型,統一處理即可
2. 運行指令
npx webpack
打開 index.html 頁面查看效果