angular - 如何在 Angular CLI 应用程序中禁用 CSS 中的 URL 解析
问题描述
我有一个简单的 Angular CLI (6.0.7) 应用程序,它在src/assets/
文件夹中有一些资产。其中一些在 Angular 组件的 CSS 文件中被引用。例子:
/* src/app/app.component.css */
.test-div {
background: url(../assets/test.png);
}
当我构建项目时,ng build
我最终得到如下输出结构:
dist/
myapp/
assets/
test.png <-- This one is simply copied from the src/asssets folder
index.html
main.js
test.png <-- This one is created by magic Angular CSS processing
...
此外,CSS 被重写以指向test.png
根目录中的文件,而不是test.png
文件assets
夹中的文件。
我根本不喜欢这种行为。我知道在生产模式下编译应用程序时有一些好处,它会为从 CSS 引用的资产文件添加一些哈希前缀以防止缓存,但我不喜欢文件重复以及 CSS 中引用的资产和手动引用的资产之间的不一致打字稿。所以我宁愿禁用这种特殊的 CSS 处理,这样 Angular 就不会解析 CSS 中的 URL 并保持 URL 不变。
那么如何禁用 Angular CLI 的这种神奇的 CSS 处理呢?
解决方案
将字体/图像的路径设为绝对路径/assets/fonts/myfont.woff
,如下所述:
https ://github.com/angular/angular-cli/issues/6599#issuecomment-379039521
为我解决了这个问题。
这是一个黑客,但它的工作原理。
请注意,它不会禁用处理,它只是避免不必要/烦人的文件重复,我认为这是您首先想要的。
推荐阅读
- angular - 为什么 tslint 会删除对象键?
- next.js - fetch 显示 next.js 中未定义的数据
- c# - 生产服务器上的 Windows 服务 AggregateException
- ignite - 已检测到阻塞的系统关键线程
- javascript - FullCalendar v4 比较事件日期
- amazon-redshift - MicroStrategy Query for Redshift 无意中添加了限制条款
- javascript - history.push() 和 props.location.state 导致“无法读取未定义的属性‘状态’”
- amazon-web-services - 如何使用 API 参考对 AWS Lambda 进行 API 调用
- node.js - 节点服务器是否有多个事件循环?
- reactjs - React Hook useEffect 缺少依赖项:'dispatch'