webpack之file-loader加载字体、图片路径问题(八)

问题描述:通过webpack构建之后,发现生成的字体目录与css中引用的字体路径不一致,而默认情况下,css中url的路径是由publicPath和outputPath两者拼接而成的。

一、为了便于理解问题,下面放上构建后的文件目录(字体引用路径存在问题):
这里写图片描述

二、修改file-loader的配置

{
    test: /\.(woff|woff2|eot|ttf|otf)$/,
    use: [{
        loader:'file-loader',
        options: {
            name: '[path][name].[ext]',//path为相对于context的路径
            context:'src',
            publicPath:function(url){//返回最终的资源相对路径
                return path.relative(distDir,url).replace(/\\/g,'/');
            }
        }
    }]
}

这里需要注意:

  1. [path]是指相对于src的字体输出路径,比如src/fonts/ xxx.ttf,输出在dist/fonts/xxx.ttf。
  2. css中url中的字体路径是由webpack_public_path + 输出路径确定的,前者即为webpack配置文件中output.publicPath的值。
  3. 上面配置中publicPath中的url就是webpack_public_path + 输出路径的值,然后再求出对输出根目录的相对路径。

三、修改后的结果

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wl_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值