【发布时间】:2020-06-16 15:59:40
【问题描述】:
日期:
虽然我无法确定这是功能还是错误。 url-loader 似乎无法处理 Svelte 组件中使用的资产,除非这些资产是通过 require 加载的。所以我想知道使用 Webpack 4(一个 Svelte 组件源)加载/预处理更常见或推荐的方法是什么,以便 HTML 标签和 CSS 样式中 src/url 中使用的所有图像资产都内联,即转换为使用 HTML 或 CSS 输出文件中嵌入的 base64 数据。
原始问题
我希望在输出中将标签<img src="./assets/logo.png"> 转换为<img src="data:image/png;base64,iV...CC">,但如果我将url-loader 添加到我的webpack.config.js 文件中,如下所示:
module: {
rules: [
//...
{
test: /logo.png/,
loader: (process.stdout.write("!!!\n"), 'url-loader')
}
src 中的 URL 在输出中仍然显示为 "./assets/logo.png",即使控制台显示“!!!”在 webpack 构建过程中没有错误,为什么 url-loader 没有进行转换?文件logo.png 的大小约为 3KB,但我不确定这是否是问题所在,因为它的大小很小。
图片正在使用here,如下所示:
<div id="app">
{#if path === '/'}
<span on:click={navigateToSettings} id="menu"><div class="hamburger" /></span>
{/if}
{#if path === '/settings' && isStored()}
<span on:click={cancel} id="menu"><div class="close" /></span>
{/if}
<img class='logo' src='./assets/img/logo.png' alt='Spark'>
{#if connected}
<span id="status" class="green">•</span>
{:else}
<span id="status" class="red">•</span>
{/if}
<div id="content">
<RouterView />
</div>
</div>
我在音频文件规则之前添加了url-loader 规则here:
module: {
rules: [
//...
{
test: /logo.png/,
loader: (process.stdout.write("!!!\n"), 'url-loader')
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader'
},
【问题讨论】:
标签: web webpack urlloader svelte-3