Замена tilda(~) в стилях через webpack

Проблема

При использовании в React или Storybook сторонних стилей или дизайн систем, в особенности адаптированных под Angular может возникнуть ошибка наподобие этой:

Module not found: Error: Can't resolve './assets/favicon.ico'

Вероятнее всего, в стилях используются относительные пути через тильду (~).

Решение

Ошибка не очевидна, так как отображается уже без ~. Были попытки создания своих реплейсеров, но оптимальным решением оказалось использование плагина: url-tilde-loader https://www.npmjs.com/package/url-tilde-loader url-tilde-loader Был изначально отброшен из вариантов, так как последние обновление было 3 года назад. А зря, вполне рабочий вариант. Даже в случае обновлении Webpack можно взять в поддержку, в виду того, что кода не так много https://github.com/P0lip/url-tilde-loader/tree/master/src

Пример конфигурации:

// webpack.config.js
{
  test: /\.s?css$/,
  use: [
    'style-loader',
    {
      loader: "css-loader",
      options: {
        modules: true,
      },
    },
    {
      loader: 'url-tilde-loader'
      options: {
        replacement: process.env.NODE_ENV === 'production' ? '/base-url/app/ : ''
      }
    },
    'sass-loader'
  ]
}

Подписка на новости блога: