美文网首页
webpack学习第三步——loader之打包图片文件

webpack学习第三步——loader之打包图片文件

作者: Love小六六 | 来源:发表于2020-02-14 20:07 被阅读0次

——loader:打包方案,对特定文件打包提供方案

在src中添加一个图片文件

import Header from './header'
import Sidebar from './sidebar'
import Content from './content'
import Avatar from './avatar.jpg'
    
new Header()
new Sidebar()
new Content()
  • 这个时候用webpack打包会报错——因为webpack只会处理js文件,遇到jpg文件不知道如何处理,所以我们要使用file-loader来处理静态文件

file-loader

npm install file-loader -D
// webpack.config.js
const path = require('path')
module.exports = {
    mode: "development",
    entry: "./src/index.js", // 路径相对于webpack.config.js
    // 对jpg结尾的文件使用file-loader
    module: {
        rules: [{
            test: /\.jpg$/,
            use: 'file-loader'
        }]
    },
    output: {
        path: path.resolve(__dirname,'bundle'),// 绝对路径+bundle文件夹
        filename: 'bundle.js'
    }
}
  • 打包后build文件夹下多出一个图片文件


  • 在index.js中使用图片
import avatar from './avatar.jpg'
    
let img = new Image()
img.src = avatar
console.log(avatar)
let root =document.getElementById('root')
root.append(img)
  • file-loader(打包静态文件)原理

    • jpg文件挪到build文件夹下
    • 把文件地址返回给变量
  • 通过配置修改生成的图片文件的文件名

const path = require('path')
module.exports = {
    mode: "development",
    entry: "./src/index.js",
    module: {
        rules: [{
            test: /\.jpg$/,
            use: {
                loader: "file-loader",
                options: {
                // 文件名称为初始文件名.初始文件后缀
                    name: '[name].[ext]'
                }
            }
        }]
    },
    output: {
        path: path.resolve(__dirname,'build'),
        filename: 'bundle.js'
    }
}
  • 打包后生成的文件名(初始文件名.初始文件后缀)
  • 给文件名加上hash值
const path = require('path')
module.exports = {
    mode: "development",
    entry: "./src/index.js",
    module: {
        rules: [{
            test: /\.jpg$/,
            use: {
                loader: "file-loader",
                options: {
                // 加上本次打包的hash值
                    name: '[name]_[hash].[ext]'
                }
            }
        }]
    },
    output: {
        path: path.resolve(__dirname,'build'),
        filename: 'bundle.js'
    }
}
  • 利用file-loader可以对多种图片文件进行处理
module: {
    rules: [{
        test: /\.(jpg|png|gif)$/,
        use: {
            loader: "file-loader",
            options: {
                name: '[name]_[hash].[ext]'
            }
        }
    }]
},
  • 修改图片文件的输出路径——options里设置outputPath
const path = require('path')
module.exports = {
    mode: "development",
    entry: "./src/index.js", // 路径相对于webpack.config.js
    module: {
        rules: [{
            test: /\.(jpg|png|gif)$/,
            use: {
                loader: "file-loader",
                options: {
                    name: '[name]_[hash].[ext]',
                    outputPath: 'images/'
                }
            }
        }]
    },
    output: {
        path: path.resolve(__dirname,'build'),
        filename: 'bundle.js'
    }
}
  • 生成的build文件夹下多了images文件夹,里面存放着图片

url-loader

  • url-loader和file-loader很像,都可以用来处理静态资源
npm install url-loader -D
const path = require('path')
module.exports = {
    mode: "development",
    entry: "./src/index.js", // 路径相对于webpack.config.js
    module: {
        rules: [{
            test: /\.(jpg|png|gif)$/,
            use: {
                loader: "url-loader",
                options: {
                    name: '[name]_[hash].[ext]',
                    outputPath: 'images/'
                }
            }
        }]
    },
    output: {
        path: path.resolve(__dirname,'build'),// 绝对路径+bundle文件夹
        filename: 'bundle.js'
    }
}
  • build文件夹下并没有图片文件,但是html里依然显示了图片


  • url-loader是将图片文件进行base64位编码,存放在bundle.js中


  • url-loader分文件大小进行不同处理

const path = require('path')
module.exports = {
    mode: "development",
    entry: "./src/index.js",
    module: {
        rules: [{
            test: /\.(jpg|png|gif)$/,
            use: {
                loader: "url-loader",
                options: {
                    name: '[name]_[hash].[ext]',
                    outputPath: 'images/',
                    // 小于2kb进行base64位编码
                    limit: 2048
                }
            }
        }]
    },
    output: {
        path: path.resolve(__dirname,'build'),// 绝对路径+bundle文件夹
        filename: 'bundle.js'
    }
}
  • 图片大于2kb,因此打包后依然生成了图片文件


file-loader还可以打包eot|ttf|svg等字体文件

相关文章

  • webpack打包图片文件

    打包图片文件 url-loader 在 webpack 中引入图片需要依赖 url-loader 这个加载器。安装...

  • webpack学习第三步——loader之打包图片文件

    ——loader:打包方案,对特定文件打包提供方案 在src中添加一个图片文件 这个时候用webpack打包会报错...

  • Webpack入门之loader篇

    什么是LOADER webpack本身只能打包Javascript文件,对于其他资源例如css,图片,或者其他的语...

  • 4.Loader打包图片

    打包图片 1.npm install file-loader --save-dev 2.默认配置文件webpack...

  • webpack 打包html img src问题

    最近,在看webpack打包图片的一些知识,首先webpack打包图片用的是url-loader; 当前loade...

  • Vue3:Webpack 中的 loader

    1、 loader 概述 loader作用 2、打包处理 css 文件 css处理 webpack.config....

  • Webpack—loader之图片打包

    在Webpack中,js文件是能够被识别并直接打包的,而其他文件类型(如CSS和图片等)则需要通过特定的loade...

  • webpack

    webpack 唯一功能:打包loader,没有loader,webpack只能打包js,有了loader,可以打...

  • webpack处理CSS

    webpack想打包CSS文件,需要安装两个loader模块,css-loader和style-loader 安装...

  • webpack基础(四)手写loader

    为什么需要loader因为webpack只支持.js,.json文件,webpack打包其他文件类型会报错。因此需...

网友评论

      本文标题:webpack学习第三步——loader之打包图片文件

      本文链接:https://www.haomeiwen.com/subject/rzubpqtx.html