Repository navigation
v1.3.0 · 换肤时不再有组件掉队
v1.3.0 · 换肤时不再有组件掉队
npm i vui-uniapp@1.3.0
这一版修的是什么
check:theme 建立时就记下 12 处历史硬编码色值作为「只减不增」的棘轮基线。
它们正是「颜色不走主题变量」这个问题的活样本:用户改 uni.scss 换肤之后,
这几处不会跟着变,而且不报错。
基线现在归零,抓到的是:
- 5 个组件各写了一遍
#f2f3f5分隔线(主题层本来就有$vui-bg-color-hover);
棘轮归零后又抓出第 13 处(vui-card 的border-top)—— 旧基线按
组件名|字面量计数,同一个组件里的第二处被同一条白名单顺带豁免了; - vui-scrollbar 的
#c0c4cc就是$vui-text-color-placeholder,值完全相同; - vui-voice-input 的
rgba(228,61,51,0.9)就是rgba($vui-error, .9); - vui-code 与 vui-markdown 各写了一份逐字相同的代码块配色
(#282c34/#abb2bf)—— 现在抽成$vui-code-bg/$vui-code-color一对变量; - vui-calendar 的禁用态文字
#e4e7ed主题层没有等值变量,新增$vui-text-color-disabled。
顺带修掉两个会让「走主题变量」自我拆台的缺陷
inject-theme.py只注入、不更新('$vui-primary:' in body即跳过):
主题层新增的变量永远进不了已有 48 个组件的兜底块,而check:sfc单独编译
组件样式块(不预置uni.scss)—— 老组件一旦引用新变量就报 Undefined variable。
现改为与 THEME_BLOCK 不一致就刷新(幂等,重复跑输出「已是当前版本: 48」)。check-theme.js把变量派生的色值判成硬编码:rgba($vui-error, .9)第一个
通道解析出 NaN → 判为非中性 → 报违规。也就是说「把硬编码改成变量」反而会让
校验变红,等于把人逼回硬编码。现在识别$通道并单独计数。
现在是一律失败,没有豁免通道
check-theme.js 从 inject-theme.py 的 THEME_BLOCK 解析变量清单,逐个组件比对
「兜底块变量清单 == 主题层清单」(此前无人保证,也不报错);解析不出来时
直接失败而不是打一行警告 —— 检查自己静默消失是本仓最贵的一类回归。
BASELINE 现在是空对象。这不是关掉检查:它是无条件失败,从此没有白名单。
自测
npm run check:all8 道校验全绿(含 SFC / 类型 / 产物一致性 / tarball 清单)。- 7 处单缺陷注入逐条命中对应结论,含一条反向对照:把「硬编码 + 基线豁免」原样
重建 → 必须仍然放行,证明棘轮归零没有变成「一律报错」。源码 sha256 逐字节还原。 prepublishOnly已随本次发布跑过完整校验链。