Задать вопрос

Как исключить webpack-лоадер на основе формы импорта ресурса?

Доброго вечера.
Есть приложение, собранное через create-react-app. Как известно, CRA предлагает способ импорта SVG в виде компонентов.
import { ReactComponent as LogoIcon } from '@/assets/logo.svg';

Обеспечивается это следующим участком кода в конфиге:
plugins: [
    [
      require.resolve('babel-plugin-named-asset-import'),
      {
        loaderMap: {
          svg: {
            ReactComponent:
              '@svgr/webpack?-svgo,+titleProp,+ref![path]',
          },
        },
      },
    ],
  ],

Однако я хочу добавить возможность хэндлить svg как символьные спрайты, оставив при этом возможность импортировать svg как компоненты. Для этого добавил svg-sprite-loader.
{
  test: /\.svg$/,
  use: [
    {
      loader: 'svg-sprite-loader',
      options: {
        symbolId: 'icon-[name]'
      }
    }
  ]
},

Собственно спрайты работают на ура, как надо, но вот импорт в виде компонента отваливается - лоадеры конфликтуют между собой.

Вопрос: можно ли как-то исключить лоадер из цепочки, если импорт происходит в каком-либо формате? То есть
import icon from 'icon.svg'; // svg-sprite-loader
import { ReactComponent as icon } from './icon.svg'; // cra-loader


Заранее спасибо.
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Merion Academy
    Frontend-разработка на React
    4 месяца
    Далее
  • ProductStar
    React: отточите навыки интерфейсной разработки
    6 недель
    Далее
Пригласить эксперта
Ответы на вопрос 1
@xenonhammer
Можно написать функцию, которая будет возвращать пути svg как jsx. Вебпак не понадобится для этого
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽