前言:

加载资源处理webpack5自带的资源模块以外,我们还可以使用传统的loader进行资源的加载

资源文件(CSS and 字体)

src \ style.less

  1. @color: #f9efd4;
  2. body {
  3. color: @color;
  4. background: #999;
  5. }
  6. @font-face {
  7. font-family: 'iconfont';
  8. src: url(./asset/font.ttf) format('truetype');
  9. }
  10. .font-test {
  11. font-family: 'iconfont';
  12. font-size: 30px;
  13. }
import "./style.css"

const span = document.createElement('span')
span.classList.add('font-test')
span.innerHTML = '本宫如此美丽,京让人以身相许'
document.body.appendChild(span)

1. 加载CSS/less资源

npm install —save-dev style-loader css-loader

模块 loader 可以链式调用。链中的每个 loader 都将对资源进行转换。链会逆序执行。第一个 loader 将其结果(被转换后的资源)传递给下一个 loader,依此类推。最后,webpack 期望链中的最后的 loader 返回 JavaScript。 应保证 loader 的先后顺序:‘style-loader’ 在前,而 ‘css-loader’ 在后。如果不遵守此约定,webpack 可能会抛出错误

MiniCssExtractPlugin 会将 CSS 提取到单独的文件中,为每个包含 CSS 的 JS 文件创建一个 CSS 文件, 并且支持 CSS 和 SourceMaps 的按需加载。(取代style-loader)

const path = require("path")
const HtmlWebpackPulgin = require("html-webpack-plugin")

// 本插件会将 CSS 提取到单独的文件中,为每个包含 CSS 的 JS 文件创建一个 CSS 文件,
并且支持 CSS 和 SourceMaps 的按需加载。(取代style-loader)
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
// 这个插件使用 cssnano 优化和压缩 CSS
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");

module.exports = {
    ...
  // loader:通过loader我们也可以加载资源文件
  //  style-loader 和 css-loader,通过这两个我们可以实现CSS文件的加载
  module: {
    rules: [
      {
        // 加载CSS/less资源
        test: /\.(css|less)$/i,
        // use: ['style-loader', 'css-loader', 'less-loader'],
        use: [MiniCssExtractPlugin.loader, 'css-loader', 'less-loader'],
      },  
    ]
  },
  optimization: {
    minimizer: [
      new CssMinimizerPlugin()
    ],
    minimize: true,
  }
}

2.加载字体资源

{
  // 加载字体资源
  test: /\.(woff|woff2|eot|ttf|otf)$/i,
  type: 'asset/resource',
},

最终效果
image.png

剩下的加载数据请看官网,步骤都一样

https://webpack.docschina.org/guides/asset-management/#loading-data