zoukankan      html  css  js  c++  java
  • webpack4怎么使用loader对图片资源打包

      首先让我用一句话来概括webpack和loader到底是什么?

        webpack:一个模块打包工具,不仅可打包js文件,还可以打包css文件,图片等资源

        loader:专门用来打包那些webpack无法识别的非js后缀的模块,比如css,图片等模块

      下面让我们通过2个实际需求来看看怎么使用loader对图片资源进行打包

      需求一:打包图片后生成的图片名字和打包前名字一样

          打包前图片名:

          打包后图片名:

      使用loader提供的file-loader,webpack.config.js配置文件中对options选项添加name参数即可

    module: {
        rules: [{
            test: /.(png|jpg|gif)$/,
            use: {
                loader: 'file-loader', 
                options: {
                    name: '[name].[ext]',
                }
            }
        }]
    }

      需求二:可自定义设置打包后图片存放文件路径,比如把图片存放在dist文件夹下新建的images文件夹中

          一般打包后生成的图片会默认存放在dist文件夹中,不会自动生成其它文件夹存放

      使用loader提供的file-loader,webpack.config.js配置文件中对options选项添加outputPath参数即可

    module: {
        rules: [{
            test: /.(png|jpg|gif)$/,
            use: {
                loader: 'file-loader', 
                options: {
                    name: '[name].[ext]',
                    outputPath: 'images/'
                }
            }
        }]
    }

       file-loader各参数配置详见:https://www.webpackjs.com/loaders/file-loader/

      

      另外,loader中的url-loaderfile-loader类似,file-loader能实现的,它都能实现,但在下面场景下使用url-loader更合适

      需求一:当图片大小>限定图片大小时,图片不打包进js文件中;当图片大小<限定图片大小时,图片打包到js文件中

          如果把图片打包进js文件中,可以减少HTTP请求,但当图片很大时,会增加打包后js文件的大小,从而影响页面加载,甚至造成白屏,

          而url-loader不管图片大小,默认会把图片打包进js文件中,图片格式为base64,如下图

            

           有没有什么两全其美的方法呢?答案是有的。只需要在webpack.config.js配置文件中对options选项添加limit参数即可

    module: {
        rules: [{
            test: /.(png|jpg|gif)$/,
            use: {
                loader: 'url-loader', 
                options: {
                    name: '[name].[ext]',
                    outputPath: 'images/',
                    limit: 20480
                }
            }
        }]
    }

          注:这里limit设置的数值单位为字节,不是KB,数值20480换算后为20KB,

            当图片大小>20KB,则打包到dist文件夹中;当图片<20KB,则直接打包到js文件中

       

  • 相关阅读:
    spring注解开发AnnotationConfigApplicationContext的使用
    java.rmi.server.ExportException: Port already in use: 1099; nested exception is
    mac 入门操作
    postgreSql 常用查询总结
    Tomcat专题
    Java反射
    notepad++ jstool 插件安装
    Java集合
    Java 集合并交补
    C++回调函数(callback)的使用
  • 原文地址:https://www.cnblogs.com/tu-0718/p/12096952.html
Copyright © 2011-2022 走看看