DataFlowing / processor /scripts /check_icon_preload.sh
stouchinglhh
Claude
sync processor from GitLab c697b6e: 版本 1.19.4 / 前端 1.12.4 —— 服务端 i18n(首屏不再闪英文)、推理模块并入模型页、前端抽出 shared/、缓存键改用前端号
bb59211
Raw History Blame Contribute Delete
2.03 kB
#!/bin/bash
# 校验:代码中引用的 iconify 图标是否全部在预加载文件里。
# 缺失的图标会在运行时请求 api.iconify.design → 页面图标闪烁/空白。
# 用法: scripts/check_icon_preload.sh ;退出码 0 = 齐全,1 = 有缺失。
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
PRE="$ROOT/web/static/iconify-preload.js"
[ -f "$PRE" ] || { echo "找不到 $PRE"; exit 1; }
# 代码里所有 "前缀:图标名" 引用(ant-design:xxx 等)。
#
# ★ app/processing/modules/ 也必须扫 —— 工作流节点的 icon 是在 Python 里声明的
# (如 data_cleaning.py 的 ``icon = "ant-design:check-circle-outlined"``),
# 这些图标和前端硬编码的一样会被调色板渲染。曾经漏扫这里,导致新增节点
# 用了白名单外的图标而检查脚本仍报"全部已预加载"。
#
# Python 文件里会有 ``cuda:0`` / ``-c:v`` 之类的噪声,但下面只认 ant-design:
# 前缀,噪声会被过滤掉。
USED="$(grep -rhoE "[a-z0-9-]+:[a-z0-9-]+" \
"$ROOT/web/workflow-studio/src" "$ROOT/web/static/js" "$ROOT/web/templates" \
"$ROOT/app/processing/modules" 2>/dev/null \
| sort -u)"
MISSING=""
while IFS= read -r ref; do
# 只检查 ant-design 前缀(预加载文件目前只包含 ant-design)
case "$ref" in
ant-design:*) ;;
*) continue ;;
esac
name="${ref#ant-design:}"
if ! grep -q "'${name}': { body" "$PRE"; then
# 指出是谁声明的,便于补齐
WHERE="$(grep -rlE "[\"']?${ref}[\"']?" \
"$ROOT/web/workflow-studio/src" "$ROOT/web/static/js" "$ROOT/web/templates" \
"$ROOT/app/processing/modules" 2>/dev/null \
| sed "s|^$ROOT/||" | paste -sd, -)"
MISSING="$MISSING"$'\n'" $ref ← ${WHERE:-未知位置}"
fi
done <<< "$USED"
if [ -n "$MISSING" ]; then
echo "以下图标未预加载(iconify-icon 会去 api.iconify.design 拉,页面卡顿/空白)。"
echo "请改用 $PRE 白名单里的图标,或把图标数据补进去:"
echo "$MISSING"
exit 1
fi
echo "全部引用图标均已预加载 ✓"