Skip to content

data-objectstack 文档页把 @objectstack/client 和 react 说成 peer dependency,而该包 peerDependencies 是空的(client 是普通 dependency,随包解析) #3781

Description

@yinlianghui

实施 #3750(把 peer 断言加宽到 README 的 Peer Dependencies 区块)时,为设计区块检测器而普查全仓「peer dependency」措辞得到的越界发现,据实另立。#3750 的面是 packages/*/README.md区块,这条在 content/docs,是散文而非区块,越界即停。

事实(复核于 origin/main = d229dfa7b)

packages/data-objectstack/package.json:

"dependencies": {
  "@object-ui/core": "workspace:*",
  "@object-ui/types": "workspace:*",
  "@objectstack/client": "^17.0.0-rc.5",
  "@objectstack/spec": "^17.0.0-rc.5"
}
"peerDependencies": {}          ← 空

content/docs/utilities/data-objectstack.mdx 三处与之不符:

原文 真相
13 npm install @object-ui/data-objectstack @objectstack/client client 是普通 dependency,随包解析,读者不必单独装
16 **Note:** The @objectstack/client package is a peer dependency and must be installed separately. 清单未声明任何 peer;"must be installed separately" 不成立
456 - **@objectstack/client** (peer dependency) - ObjectStack API client 同上
458 - **react** (peer dependency) - React library 清单完全没有 react —— 既不是 peer 也不是 dependency

第 458 行最离谱:react 在该包的 dependenciesdevDependenciespeerDependencies 里都不存在。

#3750 的关系,以及为什么不在那个 PR 里修

#3750 修的是 11 个包 README 里 **Peer Dependencies:** 区块的行(区块 ↔ 清单逐字比对),并把断言加宽到区块每一行。这条是同族异面:

因此加宽后的门禁依然看不见这一页,这是明确的残留死角而非疏忽。

影响

读者按第 13 行多装一个 @objectstack/client(无害但多余,且可能装出与包内解析不同的版本);按第 458 行去找 react peer 会找不到。属于「文档声明的依赖契约与清单不符」,和 #3750 修的是同一类失真。

修法方向(不预判)

两半可以独立判:

  • 文档侧:把三处措辞按清单改为普通 dependency 的描述,删掉不存在的 react 行;
  • 或清单侧:若 @objectstack/client 本就应该是 peer(避免版本重复、让宿主统一 client 实例 —— 这在 adapter 类包里是常见且合理的设计),那错的是清单,应把它从 dependencies 移到 peerDependencies,文档反而是对的。

这一半是真正的设计决策,不是机械替换:adapter 包让宿主提供 client 单例通常更正确,但改清单会影响所有消费者的安装面。建议由维护者裁决方向后再派发。

⚠️ 与在飞的 #3774 不相交:#3774 动的是 packages/data-objectstack/src,本条动的是 content/docs/utilities/data-objectstack.mdx(以及可能的 package.json)。

已搜重

data-objectstack peer dependencyobjectstack/client peer dependency docspeerDependencies README drift 三组关键字搜过本仓开放 issue,零命中(其中两组遇 API 限流后重试)。#3750 / #3717 / #3741 均为同族但另一条面。

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