Skip to content

@object-ui/console 是第三个「声明 license: MIT 却不带许可证文本发布」的包 —— #3696 的普查口径只数了 packages/*,漏掉 apps/* #3702

Description

@yinlianghui

发现于 #3696 的实施。不在该单完成范围内(#3696 的标题与文件面都只点名 react-runtime / sdui-parser 两个包),单独记录。

事实(origin/main 3e601773e)

#3696 正文说「38 个已发布(非 private)包里,36 个有 LICENSE 文件,2 个没有」。这个口径只展开了 packages/*pnpm-workspace.yamlpackages: 块实际有四个根: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」

四条独立佐证:

  1. package.json 显式写了 "publishConfig": {"access": "public"} —— 这是主动声明要公开发布,比「没写 private」强得多。
  2. "version": "17.3.0",与其余 38 个已发布包同版本线。
  3. .changeset/config.jsonfixed 组里列着 @object-ui/console —— 它随整组一起 bump、一起发版。
  4. prepublishOnly 脚本,且 files 明确列了 distplugin.tsplugin.jsplugin.d.tsREADME.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(与同文件里 #3663KNOWN_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

检索

按关键字(LICENSEconsole许可证)与文件路径(apps/console)检索当前 open issues,除 #3696 本身外无覆盖此事的条目,故独立立此条。未挂为 #3696 的子条目,因为它的修复不落在 #3696 的完成范围内 —— #3696 的 PR 合并后即关闭,而 apps/console 仍缺文件。


Blocked-by: objectui#3703


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions