【问题标题】:How to force CSS urls to respect webpack's publicPath setting?如何强制 CSS url 尊重 webpack 的 publicPath 设置?
【发布时间】:2019-06-08 01:15:36
【问题描述】:

我的 Angular 应用程序最终被部署到具有不同虚拟路径的 Web 服务器,例如:

http://website.com/app1/
http://website.com/app2/

为了让它们都能正常工作,在构建阶段我更改了 angular 的 <base href=> 和 webpack 的 publicUrl 选项以匹配特定的虚拟路径 app1app2

index.html 中的网址已正确更改为 <img src='hello.png'/><img src='app1/hello.png'/> 但是css和sass里面的url根本没有改变。

我使用style-loadercss-loadersass-loader 之类的插件:

        {
          test: /\.css$/,
          use: ['style-loader', 'css-loader'],
          include: [helpers.root('src', 'styles')],
        },
        {
          test: /\.scss$/,
          use: ['style-loader', 'css-loader', 'sass-loader'],
          include: [helpers.root('src', 'styles')]
        }

假设我的 css 是:

body {
  background-image: url(bg.png);
}

我可以强制 webpack 将 publicUrl 添加到 bg.png 并从 url(app1/bg.png) 加载它吗?

更新: 没有办法使用 Angular CLI

【问题讨论】:

标签: css angular webpack css-loader


【解决方案1】:

这样的东西可以工作(未经测试):

webpack.config.js

...

{
  loader: "sass-loader",
  options: {
    data: "$baseUrl: " + process.env.baseUrl + ";"
  }
}

...

scss:

body {
  background-image: url($baseUrl + 'bg.png');
}

这样你也可以在构建阶段更改process.env.baseUrl

【讨论】:

猜你喜欢
  • 2022-01-20
  • 1970-01-01
  • 2019-12-11
  • 1970-01-01
  • 2020-02-02
  • 1970-01-01
  • 1970-01-01
  • 2010-10-05
  • 1970-01-01
相关资源
最近更新 更多