玖叶教程网

前端编程开发入门

webpack5入门到实战(4-处理其他资源)

(一)修改输出资源的名称和路径

1. 配置

const { request } = require("http");

const path = require('path')
module.exports = {
  //入口:相对路径和绝对路径都行
  entry: './src/main.js',
  //输出
  output: {
    /**
    * path:文件输出目录,必须是绝对路径
    * path.resolve方法返回一个绝对路径
    * __dirname当前文件的文件夹绝对路径
    */
    path: path.resolve(__dirname,'dist'),
    //文件输出的名字 将 js 文件输出到 static/js 目录中
    filename: 'static/js/main.js'
  },
  //加载器
  module: {
    rules: [
      ......
      {
          //用来配置图片文件
          test:/\.(png|jpe?g|gif|webp)$/,
          type:'asset',
          parser:{
            dataUrlCondition:{
              maxSize:50*1024 // 小于50kb的图片会被base64处理
            }
       	 },
          generator:{
            /**
            * 将图片文件输出到 static/imgs 目录中
            * 将图片文件命名 [hash:8][ext][query]
            * [hash:8]: hash值取8位
            * [ext]: 使用之前的文件扩展名
            * [query]: 添加之前的query参数
            */
            filename: 'static/imgs/[hash:8][ext][query]'
          }
      },
  	]
  },
  //插件
  plugins: [
  ],
  //模式
  mode:'development', //开发模式
};

2. 输出文件目录

(二)自动清空上次打包资源

1. 配置

const { request } = require("http");

const path = require('path')
module.exports = {
  //入口:相对路径和绝对路径都行
  entry: './src/main.js',
  //输出
  output: {
    /**
    * path:文件输出目录,必须是绝对路径
    * path.resolve方法返回一个绝对路径
    * __dirname当前文件的文件夹绝对路径
    */
    path: path.resolve(__dirname,'dist'),
    //文件输出的名字 将 js 文件输出到 static/js 目录中
    filename: 'static/js/main.js',
    // 自动将上次打包目录资源清空
    clean:true,
  },
  //加载器
  module: {
  ......

(三)处理字体图标资源

1. 配置

const { request } = require("http");

const path = require('path')
module.exports = {
  //入口:相对路径和绝对路径都行
  entry: './src/main.js',
    //输出
    output: {
    /**
    * path:文件输出目录,必须是绝对路径
    * path.resolve方法返回一个绝对路径
    * __dirname当前文件的文件夹绝对路径
    */
    path: path.resolve(__dirname,'dist'),
    //文件输出的名字 将 js 文件输出到 static/js 目录中
    filename: 'static/js/main.js',
    // 自动将上次打包目录资源清空
    clean:true,
  },
  //加载器
  module: {
    rules: [
      ......
      {
        //用来配置字体图标文件
        test:/\.(ttf|woff2?)$/,
        type:'asset/resource',
        generator:{
          /**
          * 将文件输出到 static/media 目录中
          * 将图片文件命名 [hash:8][ext][query]
          * [hash:8]: hash值取8位
          * [ext]: 使用之前的文件扩展名
          * [query]: 添加之前的query参数
          */
          filename: 'static/media/[hash:8][ext][query]'
        }
      },
    ]
  },
  //插件
  plugins: [
  ],
  //模式
  mode:'development', //开发模式
};

type: "asset/resource"和type: "asset"的区别:

l type: "asset/resource" 相当于file-loader, 将文件转化成 Webpack 能识别的资源,其他不做处理

l type: "asset" 相当于url-loader, 将文件转化成 Webpack 能识别的资源,同时小于某个大小的资源会处理成 data URI 形式

(四)处理其他资源

开发中可能还存在一些其他资源,如音视频

1. 配置

const { request } = require("http");

const path = require('path')
module.exports = {
  //入口:相对路径和绝对路径都行
  entry: './src/main.js',
  //输出
  output: {
    /**
    * path:文件输出目录,必须是绝对路径
    * path.resolve方法返回一个绝对路径
    * __dirname当前文件的文件夹绝对路径
    */
    path: path.resolve(__dirname,'dist'),
    //文件输出的名字 将 js 文件输出到 static/js 目录中
    filename: 'static/js/main.js',
    // 自动将上次打包目录资源清空
    clean:true,
  },
  //加载器
  module: {
    rules: [
      ......
      {
        //用来配置字体图标文件
        test:/\.(ttf|woff2?|map4|map3|avi)$/,
        type:'asset/resource',
        generator:{
          /**
          * 将文件输出到 static/media 目录中
          * 将图片文件命名 [hash:8][ext][query]
          * [hash:8]: hash值取8位
          * [ext]: 使用之前的文件扩展名
          * [query]: 添加之前的query参数
          */
          filename: 'static/media/[hash:8][ext][query]'
        }
      },

    ]
  },
  //插件
  plugins: [
  ],
  //模式
  mode:'development', //开发模式
};

结语:

从第一篇开始看,更容易入手

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言