angular 19 项目 build 时出现下面的 waring
[WARNING] 2 rules skipped due to selector errors:
  .form-floating>~label -> Did not expect successive traversals.
  .form-floating>~label -> Did not expect successive traversals.
请问如何解决这个问题?
在 angular.json 中将 optimization 的 inlineCritical 设置为 false,就不会出现这个警告
"optimization": {
  "scripts": true,
  "styles": {
    "minify": true,
    "inlineCritical": false
  },
  "fonts": true
}
                        
                    在 Angular 19 项目中,您遇到的警告 "Did not expect successive traversals" 是因为 CSS 选择器存在问题,尤其是 .form-floating>~label 选择器。这样的选择器在 CSS 预处理或生成阶段可能导致解析问题。
检查和修复 CSS 选择器:
请确保选择器没有错误。根据 CSS 规范,> ~ 组合使用可能导致意外行为。您可以试着调整选择器,通过更精确或不同方式来获取目标元素。例如:
.form-floating 之后的 label(同级兄弟),那么可以考虑直接使用 label 选择器。.form-floating label
优化配置:
在您提供的情况中,将 Angular 的 angular.json 文件中 optimization.inlineCritical 设置为 false 可以避免警告的产生,但这只是一个权宜之计。因为禁用这一选项会使 Angular 在构建中不进行内联关键 CSS,这可能影响性能。
"optimization": {
  "scripts": true,
  "styles": {
    "minify": true,
    "inlineCritical": false
  },
  "fonts": true
}
如果您决定保持这一设置以消除警告,请确保性能权衡是可以接受的。
调试其他 CSS 问题:
更新您的 CSS 相关代码以避免潜在的子选择器解析错误。您也许需要进行全面审核,以确保没有其他类似的选择器组合导致相似的警告。
使用 PostCSS 处理:
如果您正在使用 PostCSS 作为构建工具,确保其配置正常以处理复杂选择器。可尝试在 PostCSS 配置中开启或增强某些插件来更好地处理 CSS 选择器组合。
虽然禁用 inlineCritical 是一种解决路径,但最佳方案还是优化和调整 CSS 代码,确保选择器的合法性和有效性。首先修复 CSS 选择器,确保其符合规范,然后再考虑其他配置选项。
如果您对 CSS 选择器的具体修改需要进一步指导,或有其他问题,请随时问我!
I get error ".form-floating>~label" in ng build
– dudu 10个月前https://github.com/GoogleChromeLabs/critters/issues/153
– dudu 10个月前