Импорт файла-загрузчика непосредственно в точку входа приложения (веб-пакет). Что такое восклицательный знак? - PullRequest
0 голосов
/ 14 мая 2018

Я использую шаблон React, и в настоящее время меня очень смущает эта строка по нескольким причинам.

require('file-loader?name=[name].[ext]!./index.html');
  1. Во-первых, почему в файле приложения точки входа требуется загрузчик файлов?
  2. Что делает параметр name=[name]?

  3. Что означает восклицательный знак?

1 Ответ

0 голосов
/ 03 января 2019

Это пример того, как загрузчик Webpack (в данном случае file-loader) используется inline .

Когда загрузчик Webpack используется встроенным, а не через объект вВ массиве module.rules файла конфигурации Webpack имя используемого загрузчика добавляется к имени файла, который вы хотите (или импортируете), разделяя !.Любые параметры, передаваемые загрузчику, указываются после имени загрузчика в виде строки запроса или строки JSON, с ?, разделяющим имя загрузчика и параметры загрузчика.

Учитывая, что file-loader копирует файл в выходной каталог Webpack и возвращает его URL, require("file-loader?name=[name].[ext]!./index.html") копирует ./index.html в выходной каталог с его исходным именем и расширением.Если результат вызова require был назначен какой-либо переменной, в этом случае он вернет /index.html (с префиксом общего пути, если он задан в вашем файле конфигурации Webpack).

Все это зависит от Webpack- если вы попытаетесь запустить этот код в Node.js, не пропуская его через Webpack, вы почти наверняка получите ошибку.

...