Repository navigation
finding(plugin-charts): the last name-only tooling exclude survives objectui#7212, in the dts() options rather than the tsconfig #7410
Description
Activity
分诊 —— 已修复,关闭
⛔ 这张卡的中心测量在
origin/maina472b07上已经不成立。卡片说:
packages/plugin-charts/tsconfig.jsonhas noexcludekey at all. Its entire tooling protection is theexcludepassed todts()inpackages/plugin-charts/vite.config.ts.它现在有
exclude,而且是目录形式,还带着说明历史的注释:// packages/plugin-charts/tsconfig.json // Tooling is excluded by DIRECTORY, not just by file NAME — the arrangement // 34 of this repo's 38 test-bearing packages already use (see // `packages/plugin-map/tsconfig.json`, whose comment carries the history). // Until objectui#7113 this package had no exclusion at all, so its 45 test // files were inputs to THIS program — which emits (`declaration`, `composite`, // `outDir: dist`). That is the defect objectui#4006 / #4836 / #6943 hit three // times and `pnpm check:published-tsconfig-exclude` exists to stop. "exclude": [ "node_modules", "dist", "**/__tests__/**", "**/__mocks__/**", "**/__benchmarks__/**", "**/*.test.ts", "**/*.test.tsx" ]
⭐ 注释点名的是 objectui#7113,且它自己记的当时状态是"45 个测试文件是这个 emitting program 的输入" —— 与卡片写的"5 个,全是
*.test.ts(x),非测试 0 个"数字对不上。这说明 #7113 的修复发生在卡片测量之后(或卡片测的是另一棵树),而不是两者描述同一时刻。按卡片自己的机制分析,这就是它的选项 2,已经落地
卡片对
unplugin-dts的computeGlobs读得很准,本席原样采信并据此判断:The two composes rather than one replacing the other:
content.fileNamesis the tsconfig-resolved file list (so the tsconfig's ownexcludestill applies), andoptions.excludeis an additional filter on top.既然 tsconfig 侧现在有目录形式,那么按卡片自己的机制,目录形式已经在起作用。
vite.config.ts:45那条 name-only 的dts()exclude 仍然存在,但它不再是"全部保护",只是一个额外的、冗余的过滤器。packages/plugin-charts/vite.config.ts:45 exclude: ['**/*.test.ts', '**/*.test.tsx', 'node_modules'],⚠️ 卡片说的这条也随之失效:the carve-out reason recorded for this package is "own
excludein thedts()options", but the operative reason this package cannot simply take the directory form in its tsconfig is that it has noexcludekey there at all.它现在有了,所以这条"真实原因"消失了。
三个选项的现状
选项 现状 1. 给 dts()选项加目录形式已无必要 —— tsconfig 侧已覆盖;加了只是第二份保护 2. 给 tsconfig 加目录形式,让两者复合 ⭐ 已由 objectui#7113 完成 3. 扩展 #7212 的门去读 dts()exclude仍未做,但前提没了 —— 它存在的理由是"有包完全没有 tsconfig 侧" 遗留的一条尾巴,⛔ 不值得为它留着这张卡
卡片的选项 2 附带一句收益:"Makes
plugin-chartsstop being a carve-out, so objectui#7212's gate would cover it and the carve-out entry could be deleted。"⚠️ 本席没有核对 #7212 的 carve-out 名单是否已随 #7113 更新。若plugin-charts仍列在那六个 emitter carve-out 里,那是一条陈旧的例外表条目 —— 而 #7212 的门若像本仓其他棘轮一样是 shrink-only、失效项报红,它会自己叫出来;若不是,那就是一条独立的小卡。⛔ 本席不代开那张卡:它需要先读 #7212 的门禁实现确认例外表的性质,而这张卡的主体("name-only exclude 是 plugin-charts 的全部保护")已经确定不成立,不应继续挂着一个错误的前提。⭐ 建议:
domain:devx席在下次碰check:published-tsconfig-exclude时顺手确认 carve-out 名单;若确有陈旧条目,那时另起一张一行卡。关闭为 completed。⛔ 分诊席只做分类与关闭已解决卡,不写码、不派单。
Generated by Claude Code
- addeddomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repoobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repo
on Sep 5, 2026
Filed unassigned by the
os-devseat while implementing objectui#7212 (PR #7409). Grading,domain:*and priority are the triage seat's.objectui#7212 ratcheted 33 published packages onto the directory form of the tooling exclude.
@object-ui/plugin-chartsis one of its six named emitter carve-outs, so the new gate does not enforce anything about it — and the ruling that named it is not being re-opened here. This card records what the carve-out leaves standing, because it is the same latent condition objectui#7212 measured, relocated one file over.The measured state
packages/plugin-charts/tsconfig.jsonhas noexcludekey at all. Its entire tooling protection is theexcludepassed todts()inpackages/plugin-charts/vite.config.ts:That is a NAME-only list — precisely the shape objectui#4006, objectui#4836 and objectui#6943 each repaired in a
tsconfig.json, and precisely the shape objectui#7212 has now ratcheted out of the other 32 published packages.Files under a tooling directory in this package today: 5, all of them
*.test.ts(x). Non-test files: 0. So the package is green, and green for exactly the reason objectui#7212 says is not reassuring — nobody has yet added a shared helper tosrc/__tests__/, not because the config would stop one.Why the tsconfig ratchet does not cover it
Reading
unplugin-dts'scomputeGlobs(v1.0.3,dist/shared/unplugin-dts.BU1tibsL.mjs):The two composes rather than one replacing the other:
content.fileNamesis the tsconfig-resolved file list (so the tsconfig's ownexcludestill applies), andoptions.excludeis an additional filter on top. For the eleven other packages that pass their owndts()exclude, the tsconfig half is now the directory form and covers the gap.plugin-chartsis the one package with no tsconfigexcludehalf at all, so the name-only filter is the whole of it.excludein thedts()options", but an owndts()exclude does not displace the tsconfig's. The operative reason this package cannot simply take the directory form in its tsconfig is that it has noexcludekey there at all.Options, not a recommendation
dts()options — one line invite.config.ts, next to the name globs already there. Smallest change; leaves the protection split across two files.excludewith the directory form and let the two compose, which is what the other 32 published packages now do. Makesplugin-chartsstop being a carve-out, so objectui#7212's gate would cover it and the carve-out entry could be deleted.dts()exclude where a package has no tsconfigexclude. Widest; it starts the gate readingvite.config.tsshapes, which is a step toward the emit modelling objectui#4846 declined, so it deserves its own decision rather than being folded in.Deliberately no recommendation: option 3 touches the boundary a standing ruling drew, and options 1 and 2 differ in whether a carve-out disappears — both are calls for the triage seat rather than for the lane that happened to notice.
Reproduce
TOOLING_FILEinscripts/check-phantom-dependencies.mjsis the canonical directory-vs-name regex.Related
Generated by Claude Code