Skip to content

@object-ui/react-runtime 与 @object-ui/sdui-parser 声明 "license": "MIT" 却不带许可证文本发布 —— #3647 显式移交分诊的那个决定,随 #3647 关闭而无人接手 #3696

Description

@yinlianghui

发现于 #3664 的实施(PR #3695)做兄弟包 License 形态普查时。不在该单完成范围内,单独记录。

事实(origin/main be9cd38ac)

38 个已发布(非 private)包里,36 个有 LICENSE 文件,2 个没有:

version private license 字段 files LICENSE 文件 README 文件
@object-ui/react-runtime 17.3.0 否(会发布) MIT ["dist"]
@object-ui/sdui-parser 17.3.0 否(会发布) MIT ["dist"]

两个包的 package.json 都写着 "license": "MIT",但仓库里没有对应的许可证文本,因此已发布的 tarball 不含 MIT 要求随分发附带的许可证与版权声明sdui-parser 另外还是 38 个已发布包里唯一连 README 都没有的。

这不是 files 声明问题,是文件本身不存在

值得写明,因为它决定了修法:npm 有一份无视 files 恒定打包的清单 —— package.jsonREADMELICENSE/LICENCE、以及 main 指向的文件。也就是说 files: ["dist"] 并不会把 LICENSE 排除在 tarball 之外;只要文件存在就会被带上。

所以这两个包缺许可证文本的原因是磁盘上根本没有该文件,不是 files 少写了一项。修法相应地是「补文件」,而不是「改 files」—— 改 files"LICENSE" 是无效操作(另外 36 个包里有的写了这一项,有的没写,两种写法在 npm 侧等价)。

这与 #3647 的形态正相反,值得并排看:plugin-tree声明了 files 含 LICENSE、文件却不存在(声明失真,npm 对 files 里不存在的条目静默跳过);这两个是没作声明、文件也不存在。npm 的行为让两者殊途同归 —— tarball 都没有许可证文本。

#3647 的关系:这是它显式移交、却随关闭而落空的那个决定

#3647 正文把这两个包明确划出了自己的范围,并把它交给分诊:

react-runtime / sdui-parserfiles 只有 dist,没有作出这个声明,所以它们是「策略问题」(要不要给所有已发布包补 LICENSE),不是「声明失真」。

最小修复是给 packages/plugin-tree 补一份……是否顺带统一 react-runtime / sdui-parser 的打包策略,请分诊裁决——那是另一个决定。

#3647 已于 2026-08-07 17:45 以 completed 关闭(PR #3662 只动了 packages/plugin-tree/LICENSE 一个文件),那个「另一个决定」没有落到任何单子上。按关键字(LICENSEreact-runtimesdui-parser)与文件路径检索当前 open issues,除 #3664 外无覆盖此事的条目 —— 故独立立此条,而不是挂在已关闭的 #3647 下。

现有门禁为什么抓不到

三道相关门禁各自都是绿的,合起来仍留下这个缺口:

建议范围(未实施,含一个待裁决项)

事实层面无争议;要请维护者裁决的是范围:

倾向 B:A 修的是这一次的两个包,B 让第 39 个包加进来时不用靠人再普查一遍 —— 本条与 #3647 都是靠人肉逐包核对才发现的,连着两次说明缺的是门禁不是细心。但补 LICENSE 是否等于确认这两个包「应当继续作为公开发布物」,属于打包策略,交分诊。

相邻但不同、已另有归属的事

sdui-parser / react-runtimefiles 只声明 dist 这件事本身(即打包内容是否完整)在 #3647#3664 正文里都被称作「打包策略」问题。本条只主张其中许可证文本缺失这一个可证实的后果,不重复主张打包策略本身。

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions