关于 fix-bootstrap-params
用于修复 UI5 linter 标出的 HTML 启动参数问题,面向维护 UI5 应用的开发者。它只修改启动脚本标签,并涵盖过时参数、主题和库。
主要功能
- 01添加或更新启动参数
- 02移除废弃或冗余参数
- 03更新过时主题和库
- 04保留非启动脚本标签
适用场景
- 01补齐 async 或兼容性参数
- 02替换过时的 UI5 主题
- 03移除废弃的库引用
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ ui5/ plugins-coding-agents --skill fix-bootstrap-params安装后在 Claude Code 中输入/fix-bootstrap-params确认已加载。
详细介绍
修复 Bootstrap 参数
关键规则
- 仅修改 Bootstrap
<script>标签(由id="sap-ui-bootstrap"或与sap-ui-core.js匹配的src标识)。所有其他<script>标签(包括内联脚本、配置块和非 UI5 脚本引用)都必须原样保留。它们将在后续阶段由fix-csp-compliance处理。 - 不要删除、移动或重写任何非 Bootstrap 标签的
<script>块。如果文件在 Bootstrap 标签之前或之后有<script>window.config = {...}</script>,请保持原样。
此技能用于修复 UI5 linter 检测到、但无法自动修复的 HTML Bootstrap 参数问题,因为这些更改可能会影响应用行为。
处理的 Linter 规则
| 规则 ID | 消息模式 | 此技能的操作 |
|---|---|---|
no-deprecated-api | 缺少 Bootstrap 参数 'data-sap-ui-async' | 添加 data-sap-ui-async="true" |
no-deprecated-api | 缺少 Bootstrap 参数 'data-sap-ui-compat-version' | 添加 data-sap-ui-compat-version="edge" |
no-deprecated-api | Bootstrap 参数 'data-sap-ui-async' 使用了已弃用的值 'false' | 改为 "true" |
no-deprecated-api | Bootstrap 参数 'data-sap-ui-compat-version' 使用了已弃用的值 '...' | 改为 "edge" |
no-deprecated-api | 应移除已废弃的 Bootstrap 参数 '...' | 移除该参数 |
no-deprecated-api | 应移除冗余的 Bootstrap 参数 '...' | 移除该参数 |
no-deprecated-api | Bootstrap 参数 '...' 应替换为 '...' | 替换为新参数 |
no-deprecated-theme | 使用了已弃用的主题 '...' | 改为 sap_horizon |
no-deprecated-library | 使用了已弃用的库 '...' | 从 libs 中移除 |
使用时机
看到如下 linter 输出时应用此技能:
index.html:8:3 error Missing bootstrap parameter 'data-sap-ui-async' no-deprecated-api
index.html:9:3 error Missing bootstrap parameter 'data-sap-ui-compat-version' no-deprecated-api
index.html:12:3 error Abandoned bootstrap parameter 'data-sap-ui-no-duplicate-ids' should be removed no-deprecated-api
index.html:15:3 error Use of deprecated theme 'sap_bluecrystal' no-deprecated-theme
修复策略
1. 定位 Bootstrap Script 标签
查找符合以下任一条件的 <script> 标签:
id="sap-ui-bootstrap"src属性与以下模式匹配:sap-ui-core.js、sap-ui-custom.js、sap-ui-boot.js等。
2. 根据规则和消息应用修复
no-deprecated-api - 缺少参数
缺少 data-sap-ui-async:添加 data-sap-ui-async="true"
缺少 data-sap-ui-compat-version:添加 data-sap-ui-compat-version="edge"
<script id="sap-ui-bootstrap"
src="resources/sap-ui-core.js"
data-sap-ui-theme="sap_horizon">
</script>
<script id="sap-ui-bootstrap"
src="resources/sap-ui-core.js"
data-sap-ui-async="true"
data-sap-ui-compat-version="edge"
data-sap-ui-theme="sap_horizon">
</script>
no-deprecated-api - 已弃用的值
data-sap-ui-async="false":改为 "true"
data-sap-ui-compat-version 的值不是 edge:改为 "edge"
no-deprecated-api - 已废弃的参数(完全移除)
完全移除以下参数:
data-sap-ui-no-duplicate-ids- 现代 UI5 中会强制执行此规则data-sap-ui-auto-aria-body-role- 已在现代 UI5 中移除data-sap-ui-manifest-first- 请改用 Component.create manifest 选项data-sap-ui-origin-info- 不再受支持data-sap-ui-areas- 请改用 Control.placeAtdata-sap-ui-trace- 不再受支持data-sap-ui-xx-no-less- 不再受支持
no-deprecated-api - 冗余参数
data-sap-ui-binding-syntax="simple"- 移除;现代 UI5 中会强制使用复杂语法data-sap-ui-binding-syntax="complex"- 如果设置了compat-version="edge",则移除data-sap-ui-preload的值无效时 - 移除
no-deprecated-api - 已替换的参数
data-sap-ui-animation→data-sap-ui-animation-mode(将true转换为full,将false转换为minimal)
no-deprecated-theme - 已弃用的主题
替换为现代主题:
sap_bluecrystal→sap_horizonsap_belize→sap_horizonsap_belize_plus→sap_horizonsap_belize_hcb→sap_horizon_hcbsap_belize_hcw→sap_horizon_hcwsap_hcb→sap_horizon_hcbsap_ux→sap_horizonsap_platinum→sap_horizonsap_goldreflection→sap_horizon
no-deprecated-library - 已弃用的库
从 data-sap-ui-libs 中移除已弃用的库:
sap.ui.commonssap.ui.ux3sap.makitsap.mesap.ca.uisap.sac.gridsap.ui.suitesap.zen.commonssap.zen.crosstabsap.zen.dsh
实施步骤
- 读取 HTML 文件
- 解析并找到引导脚本标签
- 对于每条代码检查器错误(根据规则 ID 和消息识别):
- 如果缺少参数:添加建议的参数值
- 如果值已弃用:更新为建议值
- 如果参数已废弃或冗余:移除该参数
- 如果主题已弃用:替换为现代主题
- 如果库已弃用:从库列表中移除
- 尽可能保留格式(缩进、换行)
- 写入更新后的文件
修复示例
给定代码检查器输出:
index.html:8:3 error Missing bootstrap parameter 'data-sap-ui-async' no-deprecated-api
index.html:8:3 error Missing bootstrap parameter 'data-sap-ui-compat-version' no-deprecated-api
index.html:12:3 error Abandoned bootstrap parameter 'data-sap-ui-no-duplicate-ids' should be removed no-deprecated-api
index.html:10:3 error Use of deprecated theme 'sap_bluecrystal' no-deprecated-theme
转换为:
<script id="sap-ui-bootstrap"
src="resources/sap-ui-core.js"
data-sap-ui-theme="sap_bluecrystal"
data-sap-ui-no-duplicate-ids="true"
data-sap-ui-resource-roots='{"my.app": "./"}'>
</script>
<script id="sap-ui-bootstrap"
src="resources/sap-ui-core.js"
data-sap-ui-async="true"
data-sap-ui-compat-version="edge"
data-sap-ui-theme="sap_horizon"
data-sap-ui-resource-roots='{"my.app": "./"}'>
</script>
注意事项
- 为保持一致性,始终在其他 data 属性之前添加
data-sap-ui-async="true" - 设置
compat-version="edge"会自动启用复杂绑定语法,因此binding-syntax变得冗余 - 移除参数时,不应留下尾随空格或空行
- 如果文件中有多个脚本标签,只修改引导标签——其他标签均保持原样(包括内联
<script>块,这些内容将在第 5 阶段通过 CSP 合规处理)
评论
支持 Markdown