css-loader 对url的处理

css-loader

如果url 以 “/” 开始是不会对url进行处理的,除非配置了root

url(/image.png) => url(/image.png)

但是在我们项目中,由于有些图片比较大,在开发时候会被加载在内存中去,导致了开发时内存占用太大,想直接引用静态资源地址。

// server.js 这个是开发时为一些静态资源直接提供服务地址
app.use('/dist/assets', express.static(path.join(__dirname, '../src/assets/static/')))
background-image:url(./assets/logo.png) /*这样写会会报错,因为css-loader会去require它*/
background-image:url(/assets/logo.png) /*这样写直接取了根目录,而不是相对于网页的目录,*/

所以要想办法在css-loader处理完毕之后 将url(/assets/logo.png)替换为url(assets/logo.png)
所以我用的办法是 style-loader

{
  loader: 'style-loader',
  options: {
    transform: path.join(__dirname, './transform.js') // 必须是绝对地址,而且不能直接用函数代替
  }
}
// transform.js
module.exports = function (css) {
  return css.replace('url(/', 'url(')
}

这样处理之后,只要我的url中以“/”开始就表示不需要css-loader处理。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值