使用 webpacks 时为 dataUri 指定 mime 类型 asset/inline
specify mime type for dataUri when using webpacks asset/inline
我正在使用 webpack 加载音频文件asset/inline
{
test: /\.(wav)$/i,
type: 'asset/inline',
}
import someWAV from './wav/some.wav'
一切正常,文件作为 dataUris 导入。
但是 dataUri 开头为:data:audio/wave;base64,
我需要将 mime 类型更改为 audio/wav
(不带尾随 e
)以使其与我使用的音频库一起使用。
你能在 webpack 配置中做到这一点,而不是像这样做一些丑陋的事情吗?
someWAV = someWAV.replace('audio/wave', 'audio/wav')
我尝试将 mimeType
参数添加到规则中,但这根本不起作用...
试试这个解决方案,也许它会奏效:
{
test: /\.wav/,
type: "asset/inline",
generator: {
dataUrl: (content) => {
content = content.replace('audio/wave', 'audio/wav');
return content;
}
}
};
谢谢@grzegorz-t,虽然生成器回调中的内容是原始内容,所以你需要做这样的事情:
{
test: /\.wav/,
type: 'asset/inline',
generator: {
dataUrl: (content) => {
return `data:audio/wav;base64,${content.toString('base64')}`
},
},
}
我正在使用 webpack 加载音频文件asset/inline
{
test: /\.(wav)$/i,
type: 'asset/inline',
}
import someWAV from './wav/some.wav'
一切正常,文件作为 dataUris 导入。
但是 dataUri 开头为:data:audio/wave;base64,
我需要将 mime 类型更改为 audio/wav
(不带尾随 e
)以使其与我使用的音频库一起使用。
你能在 webpack 配置中做到这一点,而不是像这样做一些丑陋的事情吗?
someWAV = someWAV.replace('audio/wave', 'audio/wav')
我尝试将 mimeType
参数添加到规则中,但这根本不起作用...
试试这个解决方案,也许它会奏效:
{
test: /\.wav/,
type: "asset/inline",
generator: {
dataUrl: (content) => {
content = content.replace('audio/wave', 'audio/wav');
return content;
}
}
};
谢谢@grzegorz-t,虽然生成器回调中的内容是原始内容,所以你需要做这样的事情:
{
test: /\.wav/,
type: 'asset/inline',
generator: {
dataUrl: (content) => {
return `data:audio/wav;base64,${content.toString('base64')}`
},
},
}