@dmitry2000

Как в webpack 5 картинки и шрифты закинуть в отдельные папки и работать с ними?

В webpack 5.6.0 картинки и шрифты автоматически переходят в корень проекта и структура получается кашевидная
610b9b08350ef746290369.png
Ранее, можно было воспользоваться file-loader'ом и сделать так:
{
        test: /\.(?:|gif|png|jpg|jpeg|svg)$/,
        use: [{
          loader: 'file-loader',
          options: {
            name: `./img/${filename('[ext]')}`
          }
        }],
      },

Оно и сейчас все нормально переносит, однако картинки, к примеру, также переносятся в корень и перестают отображаться на сайте. Как сейчас сделать правильно, чтобы картинки и шрифты были по папкам и всё работало? Читал доку, но не нашел там примеров с папками
  • Вопрос задан
  • 1403 просмотра
Решения вопроса 1
notiv-nt
@notiv-nt
Как ваше ничего? Да, моё тоже
Пригласить эксперта
Ответы на вопрос 1
@ruzzHammer
В Webpack 5 используются Asset Modules вместо привычных raw-loader, file-loader, url-loader. Чтобы вернуть поведение 4й версии и пользоваться лоадерами, можно в правиле указать type: 'javascript/auto'.
Больше инфы по ссылке
Я использую следующий конфиг с ассет модулями, чтобы разложить картинки и шрифты по разным папкам, используя generator:

module: {
    rules: [
     ....
      {
        test: /\.(woff|woff2|ttf|otf|eot)$/,
        type: 'asset/resource',
        generator: {
          filename: 'assets/fonts/[name][ext]'
        } 
      },
      {
        test: /\.(jpe?g|png|gif|svg|ico)$/,
        type: 'asset/resource',
        generator: {
          filename: 'assets/img/[name][ext]'
        } 
      }
     ....
    ],
  },
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы