- 字面 @ / | / 裸 {} 未转义只在 prod runtime 抛 Invalid linked format(dev 宽松回退、vue-tsc 捕获不到),已两次致生产回归(白屏/输入框消失)
- scripts/check-i18n.cjs:用 @intlify/message-compiler 编译全部含特殊字符的 i18n 值,npm run check:i18n 可手动跑
- commit-msg 规则 i18n-special-chars.sh:暂存区含 src/i18n/ 即跑预检,失败拒提交;双向测试过(干净放行/坏值 exit1)
14 lines
749 B
Bash
14 lines
749 B
Bash
#!/bin/sh
|
|
# i18n 消息特殊字符门禁(机制优先):暂存区含 src/i18n/ 改动时,跑 vue-i18n 消息编译预检。
|
|
# 背景:字面 @ / | / 裸 {} 未转义只在 prod runtime 抛 "Invalid linked format",dev 宽松、
|
|
# vue-tsc 捕获不到,已两次导致生产回归(2026-06-15 白屏 / 2026-10-10 输入框消失)。
|
|
# 修法:字面量转义为 {'@'} 等;详见 scripts/check-i18n.cjs
|
|
git diff --cached --name-only | grep -q '^src/i18n/' || exit 0
|
|
command -v node >/dev/null 2>&1 || exit 0
|
|
node scripts/check-i18n.cjs || {
|
|
echo "✗ [i18n] 消息含未转义特殊字符(prod 运行时会报 Invalid linked format)"
|
|
echo " 字面 @ 改写为 {'@'}(同理 | 与裸 {});本机可先跑 node scripts/check-i18n.cjs"
|
|
exit 1
|
|
}
|
|
exit 0
|