当前位置: 首页 > news >正文

webpack.config.js====图片处理

1. 安装依赖:

cnpm install --save-dev url-loader image-webpack-loader html-loader

2. webpack.config.js规则的配置

 /*
            * url-loader:主要是图片处理和Base64编码(base64就是一串加密的字符串,而且base64编码过的图片是没有http请求的)
            * image-webpack-loader:主要是压缩图片
            * */
            {
                test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
                use: [
                    {
                        loader: "url-loader",
                        options: {
                            name: "[name]-[hash:5].min.[ext]",
                            limit: 8192, // size <= 8KB
                                      publicPath: "../images",
                            outputPath: "./images"
                        }
                    },
                    {
                        loader: 'image-webpack-loader',
                        options: {
                            bypassOnDebug: true
                        }
                    }
                ]
            },
            //主要是处理html中的img标签的loader
            {
                test: /\.html$/,
                use: [{
                    loader: 'html-loader',
                    options: {
                        minimize: true
                    }
                }],
            }

3. 相关css文件和html文件

 

4. 合成雪碧图:雪碧图是为了减少网络请求,所以被处理雪碧图的图片多为各式各样的 logo 或者大小相等的小图片。而对于大图片,还是不推荐使用雪碧图。

  4.1 安装依赖

//postcss-loader和postcss-sprites则用来合成雪碧图,减少网络请求
cnpm install --save-dev postcss-loader postcss-sprites

  4.2 配置webpack.config.js文件

//配置雪碧图
let spritesConfig = {
    spritePath: "./dist/images"
};

结合postcss-loader配置postcss-sprites

 // 编译css scss sass文件
            {
                test: /\.(sa|sc|c)ss$/,
                /*
                * 从右向左编译
                * style-loader:将 JS 字符串生成为 style 节点
                * css-loader:将 CSS 转化成 CommonJS 模块
                * sass-loader:// 将 Sass 编译成 CSS
                * use: ['style-loader', 'css-loader', "postcss-loader", 'sass-loader']
                * */
                use: [
                    {
                        loader: "style-loader",
                        options: {
                            singleton: false // 处理为单个style标签
                        }
                    },
                    {
                        loader: "css-loader"
                    },
                    {
                        loader: 'postcss-loader',
                        //postcss-sprites需要结合postcss-loader合成雪碧图
                        options: {
                            ident: "postcss",
                            plugins: [require("postcss-sprites")(spritesConfig)]
                        }
                    },
                    {
                        loader: 'sass-loader'
                    }
                ]

            },
            // 文本分离:配置scss
            {
                test: /\.scss$/,
                use: extractTextWebpackPlugin.extract({
                    fallback: 'style-loader',
                    use: [
                        {loader: 'css-loader'},
                        {
                            loader: 'postcss-loader',
                            //postcss-sprites需要结合postcss-loader合成雪碧区、图
                            options: {
                                ident: "postcss",
                                plugins: [require("postcss-sprites")(spritesConfig)]
                            }
                        },
                        {loader: 'sass-loader'}
                    ]
                })
            },

在编译完成以后,会自动在css文件里面处理background-size和background-position,完美的显示图片

 

转载于:https://www.cnblogs.com/songxia/p/10318672.html

相关文章:

  • 军武科技获5000万元B轮融资 男性用户占比达到90%以上
  • ASP.NET Core 3.0项目开始“瘦身”
  • JavaScript 判断 iPhone X Series 机型
  • 学习HTTP相关知识笔记
  • 报错 could not find php_pdo或者driver
  • 智慧出行加持广西春运 科技让回家变得简单从容
  • 计算性能提升100倍,Uber推出机器学习可视化调试工具
  • 用垃圾回收机制解释JavaScript中的闭包
  • 阿里云Kubernetes容器服务上体验Knative
  • 用编码器-解码器-重构器框架实现英语-日语的神经机器翻译
  • netty-客户端.channel()方法 源码分析.md
  • Java 多线程编程之:notify 和 wait 用法
  • django之配置静态文件
  • 区块链多币种测试网络钱包(开源)
  • 滴滴出行基于RocketMQ构建企业级消息队列服务的实践
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • Docker入门(二) - Dockerfile
  • ES学习笔记(12)--Symbol
  • gitlab-ci配置详解(一)
  • java 多线程基础, 我觉得还是有必要看看的
  • JavaWeb(学习笔记二)
  • Java多线程(4):使用线程池执行定时任务
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Python 反序列化安全问题(二)
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 三栏布局总结
  • 微信小程序:实现悬浮返回和分享按钮
  • # Java NIO(一)FileChannel
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #宝哥教你#查看jquery绑定的事件函数
  • #预处理和函数的对比以及条件编译
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (四)Linux Shell编程——输入输出重定向
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (五)IO流之ByteArrayInput/OutputStream
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • ***测试-HTTP方法
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 的程序集加载上下文
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET中GET与SET的用法
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • @Transactional 竟也能解决分布式事务?
  • [AX]AX2012 SSRS报表Drill through action
  • [BZOJ3211]:花神游历各国(小清新线段树)
  • [C/C++] -- 二叉树
  • [C语言]——柔性数组
  • [C语言]一维数组二维数组的大小
  • [Firefly-Linux] RK3568 pca9555芯片驱动详解
  • [GN] Vue3.2 快速上手 ---- 核心语法2