Обычно, когда нам нужно импортировать необработанную строку, мы используем raw-loader
. Обычный вариант использования следующий:
- В исходный код добавляем:
let data = (await import(/* webpackChunkName: "a.txt" */"./a.txt")).default;
console.log(a.default)
- Будет сгенерирован файл
a.txt.js
, который будет содержать:
(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{37:function(e,n){e.exports='CONTENT_OF_TXT_FILE'}}]);
Исходный код, в который мы импортируем, будет создавать вещи, которые добавят
<script charset="utf-8" src="/a.txt.js"></script>
в раздел HTML HEAD.После того, как браузер оценит оба сценария, магия веб-пакета сделает его похожим на импорт es6.
Хорошо, вот как обычно выглядит импорт es6. А raw-loader выглядит как хак с динамическим импортом. НО можно ли просто скопировать a.txt
в каталог назначения вместо того, чтобы сделать его модулем es6
? Я хочу элегантное решение без написания каких-то неприятных оберток с XmlHttlRequest. Есть ли такой плагин в вебпаке?
Есть и другие подобные инструменты:
file-loader
— копирует файл в каталог dist и возвращает имя файла. Эта вещь по-прежнему требует некоторых оберток и выглядит не так элегантно, как es6-модуль.html-loader
- поддерживает только html путем его разбора и поискаsrc
атрибутов.