mcpField
F
fix-bootstrap-params

fix-bootstrap-params

github.com/ui5开发44146 次安装1 周前更新
代码仓库

关于 fix-bootstrap-params

用于修复 UI5 linter 标出的 HTML 启动参数问题,面向维护 UI5 应用的开发者。它只修改启动脚本标签,并涵盖过时参数、主题和库。

主要功能

  1. 01添加或更新启动参数
  2. 02移除废弃或冗余参数
  3. 03更新过时主题和库
  4. 04保留非启动脚本标签

适用场景

  1. 01补齐 async 或兼容性参数
  2. 02替换过时的 UI5 主题
  3. 03移除废弃的库引用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ui5/plugins-coding-agents --skill fix-bootstrap-params

安装后在 Claude Code 中输入/fix-bootstrap-params确认已加载。

详细介绍

修复 Bootstrap 参数

关键规则

  1. 仅修改 Bootstrap <script> 标签(由 id="sap-ui-bootstrap" 或与 sap-ui-core.js 匹配的 src 标识)。所有其他 <script> 标签(包括内联脚本、配置块和非 UI5 脚本引用)都必须原样保留。它们将在后续阶段由 fix-csp-compliance 处理。
  2. 不要删除、移动或重写任何非 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-apiBootstrap 参数 'data-sap-ui-async' 使用了已弃用的值 'false'改为 "true"
no-deprecated-apiBootstrap 参数 'data-sap-ui-compat-version' 使用了已弃用的值 '...'改为 "edge"
no-deprecated-api应移除已废弃的 Bootstrap 参数 '...'移除该参数
no-deprecated-api应移除冗余的 Bootstrap 参数 '...'移除该参数
no-deprecated-apiBootstrap 参数 '...' 应替换为 '...'替换为新参数
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.placeAt
  • data-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_horizon
  • sap_belize → sap_horizon
  • sap_belize_plus → sap_horizon
  • sap_belize_hcb → sap_horizon_hcb
  • sap_belize_hcw → sap_horizon_hcw
  • sap_hcb → sap_horizon_hcb
  • sap_ux → sap_horizon
  • sap_platinum → sap_horizon
  • sap_goldreflection → sap_horizon
no-deprecated-library - 已弃用的库

从 data-sap-ui-libs 中移除已弃用的库:

  • sap.ui.commons
  • sap.ui.ux3
  • sap.makit
  • sap.me
  • sap.ca.ui
  • sap.sac.grid
  • sap.ui.suite
  • sap.zen.commons
  • sap.zen.crosstab
  • sap.zen.dsh

实施步骤

  1. 读取 HTML 文件
  2. 解析并找到引导脚本标签
  3. 对于每条代码检查器错误(根据规则 ID 和消息识别):
    • 如果缺少参数:添加建议的参数值
    • 如果值已弃用:更新为建议值
    • 如果参数已废弃或冗余:移除该参数
    • 如果主题已弃用:替换为现代主题
    • 如果库已弃用:从库列表中移除
  4. 尽可能保留格式(缩进、换行)
  5. 写入更新后的文件

修复示例

给定代码检查器输出:

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