四、webpack的基本使用,处理字体文件,CSV,XML文件(Mhua)

2023-11-18

字体文件

webpack 处理字体文件配置

module: {
  rules: [
    {
      test: /\.(woff|woff2|eot|ttf|otf)$/,
      # asset/resource 可以帮助我们载入任何类型的资源
      type: "asset/resource"
    }
  ]
}

加载数据

如JSON文件,CSV,TSV,XML。类似于:webpack 对 JSON 支持 实际上是内置的,也就是 import Data from “./data.json” 默认是正常的。但是要导入 CSV TSV XML ,需要使用 csv-loader、xml-loader。处理这三类文件。

安装 csv-loader、xml-loader

npm install csv-loader xml-loader -D 

在 webpack.config.js 配置 module 参数

module: {
  rules: [
    {
      test: /\.(csv|tsv)$/,
      use: "csv-loader"
    },
    {
      test: /\.xml$/,
      use: "xml-loader"
    }
  ]
}

在js文件中就可以正常使用 xml 和 csv 文件了。

import data1 from "./data.xml"
import data2 from "./data.csv"

babel-loader

babel-loader 可以将 es6,es7的语法转换为低版本语法。
需要安装三个插件:

npm install babel-loader @babel/core @babel/preset-env -D

在 webpack.config.js 配置 module 参数

module: {
  rules: [
      {
        test: /\.js$/,
        # 排除 node_modules 目录下的 js 文件
        exclude: /node_modules/,
        use: {
          loader: "babel-loader",
          options: {
            presets: ["@babel/preset-env"]
          }
        }
      }
  ]
}

完整的 webpack.config.js 代码如下:

let path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin")
const MinCssExtractPlugin = require("mini-css-extract-plugin")
const CssMinmizerPlugin = require("css-minimizer-webpack-plugin")

module.exports = {
  // 入口文件
  entry: "./src/index.js",
  // 打包后文件
  output: {
    filename: "bundle.js",
    path: path.resolve(__dirname, './dist'),
    clean: true,  // 每次打包前先删除 dist 目录

    // contenthash 表示哈希值
    // ext 表示扩展名
    assetModuleFilename: "images/[contenthash][ext]"
  },

  // 模式 development/production
  mode: 'development',
  // 打包后,可以方便的调试代码。代码的位置和源文件一致。
  devtool: "inline-source-map",

  // 插件使用。
  // HtmlWebpackPlugin 用于自动生成 dist 目录下 index.html 魔板文件
  plugins: [
    new HtmlWebpackPlugin({
      // 根据魔板文件生成
      template: "./index.html",
      // 生成 dist 目录中 html 的文件名
      filename: "app.html",
      // 生成的 js 文件 引入到body标签中
      inject: "body"
    }),

    // 把 css 合并成一个文件
    new MinCssExtractPlugin({
      // 打包文件,放到 dist 下的 styles 目录下
      // contenthash 哈希字符串
      filename: "styles/[contenthash].css"
    })
  ],

  // 指定 dist 作为根路径
  devServer: {
    static: "./dist"
  },

  // 配置打包 其它资源文件 规则
  module: {
    rules: [
      {
        test: /\.png$/,
        type: "asset/resource",

        // 打包后文件命名 
        // 优先级高于 output 下 assetModuleFilename
        generator: {
          filename: "images/[contenthash][ext]"
        }
      },
      {
        test: /\.svg$/,
        // 导出资源类型的 dataurl (base64格式)
        type: "asset/inline"
      },
      {
        test: /\.txt$/,
        // 导出资源的源代码
        type: "asset/source"
      },
      {
        test: /\.jpg$/,
        // 会根据 resource / inline 两种方式进行选择
        // 默认情况下,当资源文件大于 8k 选择 resource 模式生成资源
        // 当资源文件小于8k 选择 inline 生成 base64 数据。
        type: "asset",
        parser: {
          dataUrlCondition: {
            // 设置临界值,超过 maxSize 就会 使用  asset/resource 模式,否则使用  asset/inline 生成 base64 代码
            maxSize: 4 * 1024 * 1024   // 4 M
          }
        }
      },
      {
        test: /\.(css|less)$/,
        // loader 执行顺序是从右到左(三个loader位置不能颠倒)
        use: [MinCssExtractPlugin.loader, 'css-loader', 'less-loader']
      },
      {
        test: /\.(woff|woff2|eot|ttf|otf)$/,
        // asset/resource 可以帮助我们载入任何类型的资源
        type: "asset/resource"
      },
      {
        test: /\.(csv|tsv)$/,
        use: "csv-loader"
      },
      {
        test: /\.xml$/,
        use: "xml-loader"
      },
      {
        test: /\.js$/,
        // 排除 node_modules 目录下的 js 文件
        exclude: /node_modules/,
        use: {
          loader: "babel-loader",
          options: {
            presets: ["@babel/preset-env"]
          }
        }
      }
    ]
  },

  // 优化配置
  optimization: {
    minimizer: [
      new CssMinmizerPlugin()
    ]
  }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

四、webpack的基本使用,处理字体文件,CSV,XML文件(Mhua) 的相关文章

随机推荐

  • sqli-labs通关攻略54-65[Challenges]

    Advanced Injections 文章目录 Advanced Injections less 54 less 55 less 56 less 60 less 62 less 63 less 64 less 65 最后一篇补上 less
  • yolov3 数据预处理部分实现细节

    参考 https mp weixin qq com s T9LshbXoervdJDBuP564dQ https blog csdn net qm5132 article details 83651291 https mp weixin q
  • 软件工程复习10:软件设计与实现

    作者 非妃是公主 专栏 软件工程 个性签 顺境不惰 逆境不馁 以心制境 万事可成 曾国藩 专栏地址 软件工程专栏地址 专栏系列文章 软件工程复习01 软件工程概述 软件工程复习02 个人技术 软件工程复习03 个人软件流程 软件工程复习04
  • Java经典面试题:Redis 和 Mysql 如何保证数据一致性

    Redis 和 Mysql 如何保证数据一致性 引言 重要性 挑战 Redis和MySQL概述 Redis Remote Dictionary Server MySQL 数据一致性概述 Redis的数据一致性机制 MySQL的数据一致性机制
  • vim常用操作——vim中执行shell

    vim常用操作 vim中执行shell vim中执行shell命令 有以下四种形式 单纯执行shell命令 不更改文件 形式 command 解释 不退出vim 并执行shell命令command 将命令输出显示在vim的命令区域 不会改变
  • 文件,文件夹操作(权限设置+操作)

    文件权限 r 可读权限 值为4 w 可写权限 值为2 x 可执行权限 值为1 文件权限说明 文件夹权限755 文件权限644 一个文件或文件夹的三种用户 第一位是拥有者 第二个是组内用户 第三个是组外用户 权限举例说明 文件夹权限为755
  • Project:解决问题:在Microsoft project2016中如何编辑一周七天工作日

    1 目的 1 1 想 在Microsoft project2016中如何编辑一周七天工作日 2 操作 2 1 项目 gt 更改工作时间 gt 对于日历 标准 项目日历 gt 工作周 gt 详细信息 gt 选中 星期日 和 星期六 gt 对所
  • Eigen库使用入门

    为了将Matlab写的运动学程序转化为C 所编写的dll 需要用用到矩阵库Eigen Eigen库是一个使用C 源码编写的矩阵库 基本上能满足计算中所需要用到的运算 下面介绍一些库的入门学习 1 首先是关于固定大小矩阵 向量的定义 初始化
  • python 3.2 错误 ‘generator’ object has no attribute ‘next’

    下面是一段简单的示例 定义Generator函数 def func n for i in range n yield i 在for循环中输出 for i in func 3 print i 使用next 输出 r func 4 print
  • mysql数据存储文件结构图

    1 基本结构图 2 文件说明 数据库文件夹 每一个数据库都会建立一个单独的文件夹
  • 全同态加密(FHE)体系概述(初学版)

    同态加密定义 假设有这样一个场景 用户有一组私密数据 被加密存储在了第三方的云平台 现在 该用户想对这组数据进行某种处理 但是处理过程和结果都不想让第三方云平台看到 当然 用户可以选择将数据下载下来 处理后再加密上传 但是 假如这一组数据量
  • 一种全自动的牙齿CBCT三维个体识别和分割方法

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯 小白决心每天为大家带来经典或者最新论文的解读和分享 旨在帮助各位读者快速了解论文内容 个人能力有限 理解难免出现偏差 建议
  • python安装numpy+mkl 和 scipy库失败的原因

    1 使用系统自带的pip install scipy 安装scipy库时 出现了这样的错误 之所以会出现这样的错误 主要是因为安装系统自带的numpy库时 是numpy而不是numpy mkl库 所以导致Scipy安装失败 scipy依赖于
  • Windows映像劫持调试程序

    简介 映像劫持 也被称为 IFEO Image File Execution Options 在Windows NT架构的系统里 IFEO的本意是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定 当一个可执行程序位于I
  • uln2003步进电机驱动程序

    ULN2003是一种常见的步进电机驱动芯片 可用于驱动4相 5线和6线步进电机 其驱动方式是通过输入高低电平来控制电机旋转的步进角度 以下是一般的ULN2003步进电机驱动程序框架 定义引脚 定义控制步进电机的引脚 包括4个输入引脚和4个输
  • Gutenberg 块编辑器 11.9 专注于导航菜单和块主题

    Gutenberg 11 9块编辑器于11月初发布 其中包含数十项增强功能 贡献者正在加速前进 在预计 12 月 14 日发布 WordPress 5 9 之前获得一些最终功能 11 9 版是最后一个包含即将到来的 WordPress 更新
  • chrome net::ERR_CERT_AUTHORITY_INVALID 问题

    浏览器输入 chrome net internals hsts 输入框输入你不需要安全检查的 域名 ok
  • centos7安装图形界面

    Centos7 安装图形界面 第一步 确认yum可用 1 1 判断yum是否可用 输入 yum list 如果出现以下信息 则代表不可用 1 2 更改配置 vi etc sysconfig network scripts ifcfg ens
  • Apache 之执行 CGI 脚本(Python 实现)

    目录 前言 1 查看并挑选 Python 版本 2 用 Python 实现一个简单的 CGI 脚本 3 查看 CGI 环境变量 总结 前言 本文记录了一个搭建 CGI 环境的示例 前文推荐 Apache 2 4 54 x64 安装及配置 系
  • 四、webpack的基本使用,处理字体文件,CSV,XML文件(Mhua)

    字体文件 webpack 处理字体文件配置 module rules test woff woff2 eot ttf otf asset resource 可以帮助我们载入任何类型的资源 type asset resource 加载数据 如