Skip to content

fix(shared): 修复已有目标值阻止单位替换的问题 - #49

Merged
sonofmagic merged 1 commit into
mainfrom
codex/fix-replace-duplicates
Sep 27, 2026
Merged

sonofmagic merged 1 commit into
mainfrom
codex/fix-replace-duplicates

Conversation

@sonofmagic

Copy link
Copy Markdown
Member

默认 replace:true 与 skipDuplicate:true 同时启用时,共享转换器发现已有目标属性/值就提前返回,导致源单位残留;已有声明不应阻止当前声明原位转换。

例如 rem→rpx(rootValue=32)输入:

.x{--spacing:8rpx;--spacing:2rem;--spacing:.25rem}

修复前输出 8rpx;64rpx;.25rem,修复后输出 8rpx;64rpx;8rpx,保持三条声明的顺序和覆盖关系。

  • 重复判断只在 replace:false 的插入模式下生效;默认替换模式保留节点身份、顺序及 !important,不删除重复声明。
  • 补充普通属性、自定义属性、已有值前后顺序、连续相同源值、优先级、显式/默认 replace 与 skipDuplicate 的回归,以及真实 rem 插件集成测试。
  • 将原本验证“不重复插入”的测试明确设置为 replace:false;零值转换测试现在要求源单位确实被转换。
  • 更新中英文 API 说明、中文 patch change intent,并用隔离打包产物复验 CJS/ESM 输出。

验证:新回归在旧实现中 51 条失败,修复后 78 条通过;完整测试 17 文件、347 条全部通过,无跳过。以下命令均通过:

pnpm install --frozen-lockfile
CI=1 pnpm test --update=none
pnpm lint
pnpm build
pnpm typecheck
pnpm tsd
pnpm check:cjs
pnpm change status
git diff --check

本地为 macOS、Node 24.18.0、pnpm 12.5.1;跨平台结果以本 PR CI 为准。本 PR 不发布 npm。

此修复对应 weapp-tailwindcss 对 postcss-plugin-shared@1.1.6 的临时补丁;待上游正式发布并完成发布包复验后,下游再升级并移除补丁。

Related to sonofmagic/weapp-tailwindcss#1247

@sonofmagic
sonofmagic merged commit 4474501 into main Sep 27, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant