zoukankan      html  css  js  c++  java
  • Webpack之image

    CSS中的图片处理

    直接从外部引入css的背景等图片是打包不出来的,需要用到url-loader和file-loader。

    file-loader:解决引用路径的问题,file-loader可以解析项目中的url引入(不仅限于css),根据我们的配置,将图片拷贝到相应的路径,再根据我们的配置,修改打包后文件引用路径,使之指向正确的文件。

    url-loader:图片较多,会发很多http请求,会降低页面性能。这个问题可以通过url-loader解决。url-loader会将引入的图片编码,生成dataURl。相当于把图片数据翻译成一串字符。

    npm install --save-dev file-loader url-loader

    module:{
            rules: [
                {
                  test: /.css$/,
                  use: [ 'style-loader', 'css-loader' ]
                },{
                   test:/.(png|jpg|gif)/ ,
                   use:[{
                       loader:'url-loader',
                       options:{
                           limit: 5*1024 // 图片大小 > limit 使用file-loader, 反之使用url-loader
                           outputPath: 'images/' // 指定打包后的图片位置
                       }
                   }]
                }
              ]
        }
    

    url-loader封装了file-loader,使用了url-loader后就不需要使用file-loader了。

    分离CSS 及分离后的图片处理

    npm install --save-dev extract-text-webpack-plugin

    const ExtractTextWebpackPlugin = require('extract-text-webpack-plugin');
    let cssExtract = new ExtractTextWebpackPlugin('css.css');
    let lessExtract = new ExtractTextWebpackPlugin('less.css');
    let sassExtract = new ExtractTextWebpackPlugin('sass.css');
    
    ...
    
    module: {
        rules: [
             {
                test: /.css$/,
                loader: cssExtract.extract({
                    use: ['css-loader?minimize']
                })
            }, {
                test: /.less$/,
                loader: lessExtract.extract({
                    use: ['css-loader?minimize', 'less-loader']
                })
            }, {
                test: /.scss$/,
                loader: sassExtract.extract({
                    use: ['css-loader?minimize', 'sass-loader']
                })
            }
        ]
    }
    
    ...
    
    plugins: [
        cssExtract,
        lessExtract,
        sassExtract
    ]
    

    处理图片路径问题

    const PUBLIC_PATH='htp://localhost:8080/';
    
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'bundle.js',
        publicPath:PUBLIC_PATH
    }
    

    在新版本中,extract-text-webpack-plugin会出现问题,安装时用npm install --save-dev extract-text-webpack-plugin@nxet或者用mini-css-extract-plugin代替。

    const MiniCssExtractPlugin = require("mini-css-extract-plugin");
    module.exports = {
      plugins: [
        new MiniCssExtractPlugin({
          // Options similar to the same options in webpackOptions.output
          // both options are optional
          filename: "[name].css",
          chunkFilename: "[id].css"
        })
      ],
      module: {
        rules: [
          {
            test: /.css$/,
            use: [
              MiniCssExtractPlugin.loader,  // replace ExtractTextPlugin.extract({..})
              "css-loader"
            ]
          }
        ]
      }
    }
    

    处理html中的图片

    html-withimg-loader

    {
        test: /.(htm|html)$/i,
         use:[ 'html-withimg-loader'] 
    }
    
  • 相关阅读:
    移动端Web 关于单位rem的使用小结
    psp工具需求分析
    c#制作计算器全过程
    需求分析
    为石家庄的蓝天发的第一篇博文
    ASP.NET Core 应用发布与部署指南
    开博有感
    准备开始添加博客
    深挖UITableViewCell-编辑多选模式下,引发的深思
    AFNetworking 报错3840...
  • 原文地址:https://www.cnblogs.com/jadedoo/p/10188370.html
Copyright © 2011-2022 走看看