通常当我们需要导入一些我们使用的原始字符串时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 的魔法会让它看起来像 es6 导入。
很好,这就是 es6 导入通常的样子。raw-loader 看起来像一个带有动态导入的 hack。但是是否只复制a.txt
到目标目录而不是使其成为es6
模块?我想要一个优雅的解决方案,无需使用 XmlHttlRequest 编写一些讨厌的包装器。webpack中有这样的插件吗?
还有一些其他类似的工具:
file-loader
- 将文件复制到 dist 目录并返回文件名。这东西仍然需要一些包装器,而且看起来不像 es6-module 那样优雅。html-loader
src
- 通过解析和查找属性仅支持 html 。