Webpack url-loader 内嵌 jpg 文件
Webpack url-loader jpg file inline
我正在尝试使用 url-loader 内联加载 jpg,如下所示:
let image1 = require("url?limit=100000000!./samples/sample.jpg");
在 运行 之后我得到:
"data:image/jpeg;base64,bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArICIuL3d3d3cvaW1nL3NhbXBsZS5qcGciOw=="
Base 64 字符串解码为:
module.exports = __webpack_public_path__ + "./wwww/img/sample.jpg";
我期待二进制文件的 base64 字符串。
这是预期的行为吗?我如何才能真正实现二进制文件的base64字符串?
如果我尝试内联说一个 html 文件,它会按预期工作..那么为什么不使用 jpgs 呢?
此特定文件的文件大小为 417 KB,但限制参数远大于此。
我没试过,但像这样的东西应该有用:
let image1 = require("!!url?limit=100000000!./samples/sample.jpg");
问题出在加载程序顺序上。如果您检查 webpack.config
文件,您会发现 file-loader
那里有 jpg
文件。我知道,因为我知道 file-loader
会输出这个:
module.exports = \__webpack_public_path__ + "./wwww/img/sample.jpg";
... 正在通过管道传输到 url-loader
。这就是您获得上述字符串的 base64 版本的原因。因为 file-loader
正在将其返回给 url-loader
。
请参阅 loader order documentation 了解如何覆盖它。我认为把! before 会解决你的问题。
我正在尝试使用 url-loader 内联加载 jpg,如下所示:
let image1 = require("url?limit=100000000!./samples/sample.jpg");
在 运行 之后我得到:
"data:image/jpeg;base64,bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArICIuL3d3d3cvaW1nL3NhbXBsZS5qcGciOw=="
Base 64 字符串解码为:
module.exports = __webpack_public_path__ + "./wwww/img/sample.jpg";
我期待二进制文件的 base64 字符串。
这是预期的行为吗?我如何才能真正实现二进制文件的base64字符串?
如果我尝试内联说一个 html 文件,它会按预期工作..那么为什么不使用 jpgs 呢?
此特定文件的文件大小为 417 KB,但限制参数远大于此。
我没试过,但像这样的东西应该有用:
let image1 = require("!!url?limit=100000000!./samples/sample.jpg");
问题出在加载程序顺序上。如果您检查 webpack.config
文件,您会发现 file-loader
那里有 jpg
文件。我知道,因为我知道 file-loader
会输出这个:
module.exports = \__webpack_public_path__ + "./wwww/img/sample.jpg";
... 正在通过管道传输到 url-loader
。这就是您获得上述字符串的 base64 版本的原因。因为 file-loader
正在将其返回给 url-loader
。
请参阅 loader order documentation 了解如何覆盖它。我认为把! before 会解决你的问题。