Шаг 4. Отделение шрифтов после сборки

Теперь нужно вынести шрифты в отдельную директорию. Логика обработки шрифтов точно такая же, как с изображениями. То есть мы берём расширения используемых шрифтов woff1, woff1, eot, ttf, otf и обрабатываем их следующей записью:

{
  test: /\.(woff2?|eot|ttf|otf)$/i,
  type: 'asset',
  generator: {
    filename: 'assets/fonts/[name][hash][ext]',
  },
}

В поле test мы в формате регулярного выражения указываем расширения шрифтов. Запись woff2? — сокращённая от woff1 | woff2. Далее мы говорим webpack, куда положить шрифты после сборки приложения.

Установленный по умолчанию размер в 8 КБ мы можем менять по своему усмотрению, используя запись:

    {
      test: /\.(woff2?|eot|ttf|otf)$/i,
      type: 'asset',
      generator: {
        filename: 'assets/img/[name][hash][ext]',
      },
      parser: {
        dataUrlCondition: {
          maxSize: 10 * 1024,
        },
      },
    },

У нас получилось следующее: если размер исходного кода модуля меньше maxSize (заданного размера), то модуль будет внедрён в пакет в виде строки в кодировке Base64. В противном случае файл модуля отправится в выходной каталог, где будет размещён в отведённую ему директорию.

Теперь шрифты также в отдельной директории
Теперь шрифты также в отдельной директории