如何配置 webpack 的资产资源模块,使 url 不奇怪?
How do I configure webpack's asset resource module so that url isn't weird?
我正在 webpack 5 上试用新的资产模块。
我是这样设置的:
output: {
path: path.resolve(__dirname, './build'),
assetModuleFilename: 'static/images/[name][ext]',
clean: true,
},
...
module: {
rules: [
...
{
test: /\.(png|jpe?g|gif)$/i,
type: 'asset/resource',
},
这是代码:
import imageUrl from './background.jpg';
const styles = {
backgroundImage: `url(${imageUrl})`,
};
当我 运行 代码时,这是我得到的:
<div style="background-image: url("http://localhost:3000/static/js/../../static/images/planning.jpg");">
</div>
有没有办法摆脱这个../../
?
后来我意识到生成的路径以“..static/js”开头,这不是资产模块的url。
这让我陷入了真正的问题,解决方案是将 publicPath
添加到 webpack 的输出配置中:
...
output: {
path: path.resolve(__dirname, 'build'),
publicPath: '/',
assetModuleFilename: 'static/images/[name][ext]',
clean: true,
},
...
我正在 webpack 5 上试用新的资产模块。
我是这样设置的:
output: {
path: path.resolve(__dirname, './build'),
assetModuleFilename: 'static/images/[name][ext]',
clean: true,
},
...
module: {
rules: [
...
{
test: /\.(png|jpe?g|gif)$/i,
type: 'asset/resource',
},
这是代码:
import imageUrl from './background.jpg';
const styles = {
backgroundImage: `url(${imageUrl})`,
};
当我 运行 代码时,这是我得到的:
<div style="background-image: url("http://localhost:3000/static/js/../../static/images/planning.jpg");">
</div>
有没有办法摆脱这个../../
?
后来我意识到生成的路径以“..static/js”开头,这不是资产模块的url。
这让我陷入了真正的问题,解决方案是将 publicPath
添加到 webpack 的输出配置中:
...
output: {
path: path.resolve(__dirname, 'build'),
publicPath: '/',
assetModuleFilename: 'static/images/[name][ext]',
clean: true,
},
...