Skip to content

content/docs/guide/plugins.md 的插件骨架:step 5 的 vite.config.ts import 了 @vitejs/plugin-react,step 6 的 devDependencies 从未声明它(照抄即构建失败) #4961

Description

@yinlianghui

越界发现,记录于 #3855(该页示例 package.json 的 vite/typescript 版本化石)实施期间 —— 为了判定「devDependencies 这一块该锚到哪」而逐行读这份骨架时扫到的。#3855 的完成范围限定在那两个版本值 + 把该拼写纳入 #3711 的版本声称门,这一条是块内容的缺项而非版本值,故只记录。

事实(对 origin/main @ 1b21b1aaa 实测)

content/docs/guide/plugins.md 的 "Creating Custom Plugins" 是一份编号步骤的脚手架教程,读者按 1→6 顺序照抄。其中两步互相矛盾:

  • Step 5 "Configure Build"(:340)—— 给出的 vite.config.ts 第三行就是
    import react from '@vitejs/plugin-react',并在 plugins: [react()] 里用掉它。
  • Step 6 "Add Package.json"(:397-403)—— 给出的 devDependencies
    @object-ui/components / @object-ui/core / @object-ui/types(均 workspace:*)、
    typescriptvite@vitejs/plugin-react 不在其中,全页仅 :340 那一次 import 提到过它。

照这两步做出来的包,pnpm build 在解析 vite.config.ts 的第三行就失败 —— 导入了一个从未安装的包。

仓内锚点(19 个 packages/plugin-*/package.json 全部一致):

骨架声明 仓内 plugin 包
vite ^8.2.1 ✅(#3855 已对齐) ^8.2.1,19/19
typescript ^6.0.3 ✅(#3855 已对齐) ^6.0.3,16/19 声明,声明者全一致
(缺) @vitejs/plugin-react ^6.0.5,19/19

也就是说锚是现成且一致的,不需要任何判断:骨架缺的正是仓内每个 plugin 包都声明的那一条。

与已关闭的两条同形先例

两条都已修且都在 packages/create-plugin / packages/cli,手写文档面这一份没被一起过一遍 —— 生成器和这页教的是同一件事,却各自维护。

影响

读者照抄这份编号教程起新插件,在 step 5/6 之后第一次 pnpm build 即失败。与 #3855 的「版本区间脱钩,踩到时表现为『我的插件构建不出来』」是同一种用户体验,但更直接:那边是版本不匹配,这边是包根本没装。

修法(顺带说明它现在也会被门守住)

在 step 6 的 devDependencies 里加 "@vitejs/plugin-react": "^6.0.5"

注意这会引入一处新的版本字面量,于是 #3711 的棘轮门(scripts/__tests__/doc-version-claims.test.ts)会立刻变红,要求给它一条 KNOWN_CLAIMS 条目 —— 这正是该门的设计。#3855 落地后这条条目的自然写法已经有了机械支撑:kind: 'anchored' + skeletonDep: '@vitejs/plugin-react',新增的 plugin-skeleton 断言会自动把该行的区间与 19 个 plugin 清单比对,不需要再写新机制。所以这一单的成本基本只有那一行文档 + 一条条目。

不是 Blocked-by: #3855 —— 这一条独立可做;#3855 只是让它的门禁条目更便宜。若在 #3855 合并前动手,skeletonDep 还不存在,按当时的 sample/anchored 写法记账即可。

顺带核过、不用动的两处


Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions