Преобразование / замена webpack css

Я использую webpack с css-loader, style-loader и ExtractTextPlugin для генерации CSS-файлов.

Я хотел бы заменить определенные URL-адреса, используемые в этих файлах CSS.

Например:

url('../fonts/icomoon.ttf?asbl3h') 
url('../../fonts/whatever.ttf?asbl4h') 

должен стать

url('fonts/icomoon.ttf?asbl3h')
url('fonts/whatever.ttf?asbl4h') 

Шрифты не обязательно находятся в правильной относительной папке. Я использую веб-пакет для генерации CSS с плагином, чтобы скопировать все шрифты в определенную папку.

Каков наилучший способ сделать это?

В качестве запасного варианта было бы нормально просто выполнять замену строк.

1 ответ

Определенно не уверен, что это лучший способ, но для тех, кто столкнулся с необходимостью прибегнуть к замене строк, вот краткое описание того, как я взломал подобную проблему, используя string-replace-loader и определение специального правила для файлов, которые необходимо изменить:

  module: {
    rules: [
      {
        test: REGEX_MATCHING_ONLY_FILES_TO_BE_MODIFIED,
        use: [
          {
            loader: 'string-replace-loader',
            options: {
              search: "url\\('\(.*)fonts/", // these regular expressions should work for the example paths in the question
              replace: 'url(fonts/\1)',
              flags: 'g',
            }
          },
          // any other loaders you need, e.g. css-loader //
        ],
      },
    ],
  }

( Авторы: ответ jakenuts на webpack-contrib#27 поставил меня на правильный путь.)

Другие вопросы по тегам