发现于 #3696 的实施。不在该单完成范围内(#3696 的标题与文件面都只点名 react-runtime / sdui-parser 两个包),单独记录。
事实(origin/main 3e601773e)
#3696 正文说「38 个已发布(非 private)包里,36 个有 LICENSE 文件,2 个没有」。这个口径只展开了 packages/*。pnpm-workspace.yaml 的 packages: 块实际有四个根:packages/*、examples/*、apps/*、docs。按全部四个根重新普查:
|
数量 |
| 工作区包总数 |
45 |
| 非 private |
39 |
非 private 且声明 license 字段 |
39(全部为 MIT) |
| 其中没有 LICENSE 文件 |
3 |
那 3 个是:
| 包 |
目录 |
private |
license |
publishConfig |
LICENSE 文件 |
@object-ui/react-runtime |
packages/react-runtime |
否 |
MIT |
无 |
无 → #3696 修 |
@object-ui/sdui-parser |
packages/sdui-parser |
否 |
MIT |
无 |
无 → #3696 修 |
@object-ui/console |
apps/console |
否 |
MIT |
{"access":"public"} |
无 ← 本条 |
@object-ui/console 确实是发布物,不是「恰好没写 private 的内部 app」
四条独立佐证:
package.json 显式写了 "publishConfig": {"access": "public"} —— 这是主动声明要公开发布,比「没写 private」强得多。
- 有
"version": "17.3.0",与其余 38 个已发布包同版本线。
.changeset/config.json 的 fixed 组里列着 @object-ui/console —— 它随整组一起 bump、一起发版。
- 有
prepublishOnly 脚本,且 files 明确列了 dist、plugin.ts、plugin.js、plugin.d.ts、README.md。
所以它与另外两个包处在完全相同的状态:manifest 声明 MIT,tarball 里没有 MIT 要求随分发附带的许可证与版权声明。
与 #3696 的关系:已被其门禁看见并挂账,不是漏网
#3696 的 PR 给 scripts/__tests__/package-files-exist.test.ts 加了那道「非 private 且声明 license 的包必须有许可证文本」的门禁。该门禁的判据是派生的(不是硬编码包名单),所以它同样会点名 apps/console。为了不让门禁一落地就是红的、又不越出 #3696 的文件面,apps/console 被写进了该门禁自带的 ratchet 基线 KNOWN_LICENSE_TEXT_MISSING,并指向本条 issue。
那是个双向 ratchet(与同文件里 #3663 的 KNOWN_MISSING 同形):
- 新出现的同类缺陷 → 直接红,不经基线;
- 基线里的条目一旦修好 → 也红,提示「删掉这一行把进度存档」。
也就是说本条被修时必须同时删掉基线里那一行,否则门禁转红。修法与 #3696 完全一致,预计一个文件:
cp LICENSE apps/console/LICENSE
(仓根 LICENSE 与另外 37 份在 git 里是同一个 blob cf2ca28574caca42deafdee0ea935fc2e2823427,逐字节复制即可 —— #3662 / #3687 已证)
外加删 KNOWN_LICENSE_TEXT_MISSING 里的 apps/console 一行。
为什么 files 不含 LICENSE 不影响修法
同 #3696 正文已论证的那条 npm 语义:LICENSE 属于 npm 无视 files 恒定收录的清单。本次在 #3696 的实施中对这条做了实测(在 packages/sdui-parser 上逐个改名跑 npm pack --dry-run):
| 文件名 |
是否进 tarball |
LICENSE / License / LICENCE / LICENSE.md / LICENSE.txt |
收录 |
copying |
收录 |
NOTICE |
不收录 |
CHANGELOG.md |
不收录 |
NOTALICENSE |
不收录(对照组) |
所以 apps/console 只要把文件放进去就会被带上,不需要改 files。
检索
按关键字(LICENSE、console、许可证)与文件路径(apps/console)检索当前 open issues,除 #3696 本身外无覆盖此事的条目,故独立立此条。未挂为 #3696 的子条目,因为它的修复不落在 #3696 的完成范围内 —— #3696 的 PR 合并后即关闭,而 apps/console 仍缺文件。
Blocked-by: objectui#3703
Generated by Claude Code
发现于 #3696 的实施。不在该单完成范围内(#3696 的标题与文件面都只点名
react-runtime/sdui-parser两个包),单独记录。事实(origin/main
3e601773e)#3696 正文说「38 个已发布(非 private)包里,36 个有 LICENSE 文件,2 个没有」。这个口径只展开了
packages/*。pnpm-workspace.yaml的packages:块实际有四个根:packages/*、examples/*、apps/*、docs。按全部四个根重新普查:license字段MIT)那 3 个是:
privatelicensepublishConfig@object-ui/react-runtimepackages/react-runtimeMIT@object-ui/sdui-parserpackages/sdui-parserMIT@object-ui/consoleapps/consoleMIT{"access":"public"}@object-ui/console确实是发布物,不是「恰好没写 private 的内部 app」四条独立佐证:
package.json显式写了"publishConfig": {"access": "public"}—— 这是主动声明要公开发布,比「没写 private」强得多。"version": "17.3.0",与其余 38 个已发布包同版本线。.changeset/config.json的fixed组里列着@object-ui/console—— 它随整组一起 bump、一起发版。prepublishOnly脚本,且files明确列了dist、plugin.ts、plugin.js、plugin.d.ts、README.md。所以它与另外两个包处在完全相同的状态:manifest 声明
MIT,tarball 里没有 MIT 要求随分发附带的许可证与版权声明。与 #3696 的关系:已被其门禁看见并挂账,不是漏网
#3696 的 PR 给
scripts/__tests__/package-files-exist.test.ts加了那道「非 private 且声明license的包必须有许可证文本」的门禁。该门禁的判据是派生的(不是硬编码包名单),所以它同样会点名apps/console。为了不让门禁一落地就是红的、又不越出 #3696 的文件面,apps/console被写进了该门禁自带的 ratchet 基线KNOWN_LICENSE_TEXT_MISSING,并指向本条 issue。那是个双向 ratchet(与同文件里 #3663 的
KNOWN_MISSING同形):也就是说本条被修时必须同时删掉基线里那一行,否则门禁转红。修法与 #3696 完全一致,预计一个文件:
(仓根 LICENSE 与另外 37 份在 git 里是同一个 blob
cf2ca28574caca42deafdee0ea935fc2e2823427,逐字节复制即可 —— #3662 / #3687 已证)外加删
KNOWN_LICENSE_TEXT_MISSING里的apps/console一行。为什么
files不含 LICENSE 不影响修法同 #3696 正文已论证的那条 npm 语义:LICENSE 属于 npm 无视
files恒定收录的清单。本次在 #3696 的实施中对这条做了实测(在packages/sdui-parser上逐个改名跑npm pack --dry-run):LICENSE/License/LICENCE/LICENSE.md/LICENSE.txtcopyingNOTICECHANGELOG.mdNOTALICENSE所以
apps/console只要把文件放进去就会被带上,不需要改files。检索
按关键字(
LICENSE、console、许可证)与文件路径(apps/console)检索当前 open issues,除 #3696 本身外无覆盖此事的条目,故独立立此条。未挂为 #3696 的子条目,因为它的修复不落在 #3696 的完成范围内 —— #3696 的 PR 合并后即关闭,而apps/console仍缺文件。Blocked-by: objectui#3703
Generated by Claude Code