Если вы создаете проекты веб-пакетов, которые не являются шаблоном, и хотите включить Font Awesome, вы можете столкнуться с ошибкой при компиляции их версии SASS.

Module not found: Error: Can't resolve '../fonts/fontawesome-webfont.eot'

Ошибка повторяется для других файлов шрифтов, включенных в библиотеку Font Awesome.

Проблема в том, что sass-loader не может самостоятельно разрешить относительные пути для модулей webpack. Font Awesome SCSS загружает ресурс шрифта, например: url(../fonts/fontawesome-webfont.eot). Таким образом, webpack ищет ресурс в базовом каталоге и не находит его.

Одно из решений - изменить указанную в проекте переменную$fa-font-path. Однако это не решит проблему универсально для всех поставщиков пакетов.

Единственное правильное решение - дополнить конвейер связывания SASS включением другого загрузчика перед sass-loader для преобразования относительных путей в url() адресах CSS.

Это решает resolve-url-loader. Это было сделано специально для решения проблемы с sass-loader. Как указано в документации, загрузчик должен быть включен перед sass-loader, а все загрузчики, предшествующие преобразователю URL, должны сгенерировать исходную карту.

В моем случае правило webpack для SASS выглядит так:

rules: [
  {
    test: /\.scss$/,
    use: [
      {
        loader: 'css-loader',
        options: {
          sourceMap: true
        }
      },
      {
        loader: 'resolve-url-loader'
      },
      {
        loader: 'sass-loader'
      }
    ]
  }
]

Надеюсь, это было полезно, и вы поняли проблему, вызвавшую ошибку. Есть и другие статьи об этом решении, но ни в одной из тех, что я прочитал, не упоминались требования resol-url-loader и недостатки sass-loader.