zoukankan      html  css  js  c++  java
  • webpack学习04--打包图片资源

    1.使用npm下载组件

    npm i file-loader -D
    npm i url-loader -D
    npm i html-loader -D

    2.配置webpack.config.js文件

    const { resolve } = require('path');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    
    module.exports = {
      entry: './src/index.js',
      output: {
        filename: 'build.js',
        path: resolve(__dirname, 'build'),
        publicPath: './'//webpack5 需要加入此行设置!!!!!!!
      },
      module: {
        rules: [
          {
            test: /.less$/,
            // 要使用多个loader处理用use
            use: ['style-loader', 'css-loader', 'less-loader']
          },
          {
            // 问题:默认处理不了html中img图片
            // 处理图片资源
            test: /.(jpg|png|gif|JPG)$/,
            // 使用一个loader
            // 下载 url-loader file-loader
            loader: 'url-loader',
            options: {
              // 图片大小小于8kb,就会被base64处理
              // 优点: 减少请求数量(减轻服务器压力)
              // 缺点:图片体积会更大(文件请求速度更慢)
              limit: 8 * 1024,
              // 问题:因为url-loader默认使用es6模块化解析,而html-loader引入图片是commonjs
              // 解析时会出问题:[object Module]
              // 解决:关闭url-loader的es6模块化,使用commonjs解析
              esModule: false,
              // 给图片进行重命名
              // [hash:10]取图片的hash的前10位
              // [ext]取文件原来扩展名
              name: '[hash:10].[ext]'
            }
          },
          {
            test: /.html$/,
            // 处理html文件的img图片(负责引入img,从而能被url-loader进行处理)
            loader: 'html-loader'
          }
        ]
      },
      plugins: [
        new HtmlWebpackPlugin({
          template: './src/index.html'
        })
      ],
      mode: 'development'
    };

    3.准本3张图片

    angular.jpg
    react.png
    vue.jpg

    4.编写相关文件

    index.less

    #box1{
       100px;
      height: 100px;
      background-image: url('./vue.jpg');
      background-repeat: no-repeat;
      background-size: 100% 100%;
    }
    
    #box2{
       200px;
      height: 200px;
      background-image: url('./react.png');
      background-repeat: no-repeat;
      background-size: 100% 100%;
    }
    
    #box3{
       300px;
      height: 300px;
      background-image: url('./angular.jpg');
      background-repeat: no-repeat;
      background-size: 100% 100%;
    }

    index.js

    import './index.less'

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <div id="box1"></div>
        <div id="box2"></div>
        <div id="box3"></div>
    </body>
    </html>

    5.执行webpack打包命令

    webpack

    6.生成build.js和index.html文件

    新生成的index.html 

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <div id="box1"></div>
        <div id="box2"></div>
        <div id="box3"></div>
    <script src="./build.js"></script></body>
    </html>

    页面效果:

  • 相关阅读:
    Java中Timer的用法
    Java ThreadFactory接口用法
    ThreadPoolExecutor使用介绍
    linux命令学习-4-lsof
    备份文件-域名+日期扫描
    Trickbot展示新技巧:密码抓取器模块
    Trickbot增加的远程应用程序凭证抓取功能
    基于ATT和CK™框架的开放式方法评估网络安全产品
    调试键盘纪录类型的样本
    LordPE修复从进程dump出来的内存文件
  • 原文地址:https://www.cnblogs.com/asenyang/p/14403421.html
Copyright © 2011-2022 走看看