【快速搞定Webpack5】处理图片资源(四)

过去在webpack4中,我们处理图片资源通过file-loader和url-loader进行处理

现在webpack5已经将两个loader功能内置到webpack中了,我们只需要简单配置即可处理图片资源。

1、配置

新增37-38行配置

js 复制代码
const path = require("path");

module.exports = {
    // 入口
    entry: "./src/main.js",  // 需要用相对路径
    // 输出
    output: {
        // 文件的输出路径
        // __dirname nodejs的变量,代表当前文件的文件夹目录
        path: path.resolve(__dirname, "dist"),   // 需要用绝对路径 需要用的Nodejs的核心模块 path,专门处理路径问题
        // 文件名
        filename: "main.js",
    },
    // 加载器
    module: {
        rules: [
            // loader的配置
            {
                test: /\.css$/,     // 只检测.css文件
                use:[
                    // 执行顺序,从右到左,从下到上
                    "style-loader", // 将js中的css通过创建style标签添加到html文件中生效
                    "css-loader",    // 将css资源编译成commonJs的模块到js中
                ],     
            },
            {
                test: /\.less$/,     // 只检测.less文件
                // loader: "xxx", // 配置中只能使用一个loader,use可以多个
                use:[
                    // 执行顺序,从右到左,从下到上
                    "style-loader", // 将js中的css通过创建style标签添加到html文件中生效
                    "css-loader",    // 将css资源编译成commonJs的模块到js中
                    "less-loader",    // 将less资源编译成css
                ],
            },
            {
                test: /\.(png|jpe?g|gif|webp)$/,
                type: "asset",  // 这里使用asset相当于就是webpack4中使用了url-loader来处理
            },
        ],
    },
    // 插件
    plugins: [
        // plugin的配置
    ],
    // 模式
    mode: "development",
};

2、添加图片资源

  • src/images/1.jpg
  • src/images/2.jpeg

3、使用图片资源

  • src/css/index.css
css 复制代码
.box1 {
  width: 100px;
  height: 100px;
  background-color: pink;
  margin: 10px;
  background-image: url("../images/WechatIMG344.jpeg");
  background-size: cover;
}
  • src/less/index.less
css 复制代码
.box2 {
    width: 150px;
    height: 150px;
    background-color:tomato;
    margin: 5px;
    border-radius: 5px;
    float: left;
    background-image: url("../images/index.jpg");
    background-size: cover;
}

5、输出资源

bash 复制代码
npx webpack

6、对比图片资源进行优化

官方文档 进入后搜索:parser

  • 配置文件(新增39-44行配置)
js 复制代码
const path = require("path");

module.exports = {
    // 入口
    entry: "./src/main.js",  // 需要用相对路径
    // 输出
    output: {
        // 文件的输出路径
        // __dirname nodejs的变量,代表当前文件的文件夹目录
        path: path.resolve(__dirname, "dist"),   // 需要用绝对路径 需要用的Nodejs的核心模块 path,专门处理路径问题
        // 文件名
        filename: "main.js",
    },
    // 加载器
    module: {
        rules: [
            // loader的配置
            {
                test: /\.css$/,     // 只检测.css文件
                use:[
                    // 执行顺序,从右到左,从下到上
                    "style-loader", // 将js中的css通过创建style标签添加到html文件中生效
                    "css-loader",    // 将css资源编译成commonJs的模块到js中
                ] 
            },
            {
                test: /\.less$/,     // 只检测.less文件
                // loader: "xxx", // 配置中只能使用一个loader,use可以多个
                use:[
                    // 执行顺序,从右到左,从下到上
                    "style-loader", // 将js中的css通过创建style标签添加到html文件中生效
                    "css-loader",    // 将css资源编译成commonJs的模块到js中
                    "less-loader",    // 将less资源编译成css
                ]
            },
            {
                test: /\.(png|jpe?g|gif|webp)$/,
                type: "asset",  // 这里使用asset相当于就是webpack4中使用了url-loader来处理
                parser: {
                    dataUrlCondition: {
                        // 设置小于15k 使用base64
                        // 优点减少请求数量 缺点:文件体积变大
                        maxSize: 15 * 1024, 
                    }
                }
            },
        ],
    },
    // 插件
    plugins: [
        // plugin的配置
    ],
    // 模式
    mode: "development",
};
  • 效果

并且此时,打包后的dist文档内,也没有第二个图片。

相关推荐
星晨雪海16 分钟前
怎么格式化idea中的vue文件
前端·vue.js·intellij-idea
没事多睡觉66622 分钟前
Vue 虚拟列表实现方案详解:三种方法的完整对比与实践
前端·javascript·vue.js
white-persist33 分钟前
Burp Suite模拟器抓包全攻略
前端·网络·安全·web安全·notepad++·原型模式
ObjectX前端实验室1 小时前
【前端工程化】脚手架篇 - 模板引擎 & 动态依赖管理脚手架
前端
GISer_Jing1 小时前
前端GIS篇——WebGIS、WebGL、Java后端篇
java·前端·webgl
excel1 小时前
Vue3 EffectScope 源码解析与理解
前端·javascript·面试
不老刘2 小时前
Base UI:一款极简主义的「无样式」组件库
前端·ui
祈祷苍天赐我java之术2 小时前
Redis 有序集合解析
java·前端·windows·redis·缓存·bootstrap·html
ObjectX前端实验室3 小时前
【react18原理探究实践】React Effect List 构建与 Commit 阶段详解
前端·react.js
用户1456775610374 小时前
文件太大传不了?用它一压,秒变合格尺寸!
前端