Обычно, когда нам нужно импортировать необработанную строку, мы используем 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.
После того, как браузер оценит оба сценария, webpack magi c сделает его похожим на импорт es6.
Хорошо, вот как обычно выглядит импорт es6. А raw-loader выглядит как хак с импортом динамиков c. НО можно ли просто скопировать a.txt
в целевой каталог вместо того, чтобы делать его модулем es6
? Мне нужно элегантное решение без написания неприятных оболочек с помощью XmlHttlRequest. Есть ли такой плагин в webpack?
Есть и другие похожие инструменты:
file-loader
- копирует файл в каталог dist и возвращает имя файла. Эта вещь по-прежнему требует некоторых оболочек и выглядит не так элегантно, как es6-module. html-loader
- поддерживает только html, анализируя его и ища атрибуты src
.