Подтвердить что ты не робот

Что такое заказ загрузчика для webpack?

Когда у меня есть конфигурация загрузчика с несколькими тестами, соответствующими файлу, я бы ожидал, что будет использоваться только первый соответствующий загрузчик, но это, похоже, не так.

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

В документации не упоминается, как должна себя вести эта ситуация.

4b9b3361

Ответ 1

{
    test: /\.css$/,
    loaders: ['style'],
},
{
    test: /\.css$/,
    loaders: ['css'],
},

и

{
    test: /\.css$/,
    loaders: ['style', 'css'],
},

кажутся равными. В функциональных терминах это то же самое, что и style(css(file)) (спасибо Мигелю).

Обратите внимание, что в пределах loaders они оцениваются от справа налево.

Ответ 2

Официальная документация объясняет это очень хорошо. К сожалению, вся необходимая информация распространяется в разных разделах документации. Позвольте мне завершить все, что вам нужно знать.

1.

Убедитесь, что они находятся в правильном порядке (вверху).

2.

Это функции, которые берут исходный файл ресурса в качестве параметр и вернуть новый источник.

3.

Погрузчики могут быть прикованы. Они применяются в трубопроводе к ресурс. Ожидается, что конечный загрузчик вернет JavaScript; каждый другой загрузчик может возвращать источник в произвольном формате, который передается следующий загрузчик.

Итак...

Если у вас есть somefile.css, и вы проходите его через loaderOne, loaderTwo, loaderThree ведет себя как регулярная цепочечная функция.

{
    test: /\.css$/,
    loaders: ['loaderOne', 'loaderTwo', 'loaderThree']
}

означает то же самое, что...

loaderOne(loaderTwo(loaderThree(somefile.css)))

Если вы пришли от хрюка || Мир gulp запутан. Просто прочитайте загрузчики справа налево.

Ответ 3

Этот ответ был полезен для меня, но я хотел бы добавить еще один момент, который влияет на порядок загрузчика, который является loadername!.

Скажем, у вас есть url-loader в вашей конфигурации с более высоким приоритетом, чем file-loader, и вы хотите импортировать путь изображения с последним. Не предпринимая ничего, вы импортируете файл через url-loader (который создает кодированный URL-адрес).

Префикс импорта с помощью file-loader! будет направлять импорт этому загрузчику.

import image from 'file-loader!./my-img.png'