ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Plate 项目 Slate v2 重命名切割(Rename Cut)实战:从 `*-v2` 过渡包名到最终命名的完整迁移指南

Plate 项目 Slate v2 重命名切割(Rename Cut)实战:从 `*-v2` 过渡包名到最终命名的完整迁移指南 Plate 项目 Slate v2 重命名切割Rename Cut实战从*-v2过渡包名到最终命名的完整迁移指南【免费下载链接】plateRich-text editor with AI and shadcn/ui项目地址: https://gitcode.com/GitHub_Trending/pl/plate导读本文基于 docs/plans/2026-04-06-slate-v2-rename-cut.md 展开讲解 Plate 生态中 Slate v2 替换候选技术栈如何执行重命名切割rename cut将过渡期的slate-v2、slate-react-v2、slate-dom-v2、slate-history-v2等命名一次性切换到slate、slate-react、slate-dom、slate-history等最终包名。读完本文你将掌握一次 monorepo 包重命名所涉及的全部改动面包目录、包名、imports、tsconfig refs、rollup 配置、workspace 依赖、示例/测试文件名与路由 id、剪贴板与浏览器 payload 命名、文档引用以及一套可复用的验收与回归验证链条install / build / type / test / browser proof。一、背景为什么需要一次重命名切割在 Slate v2 迁移程序中替换候选技术栈最早是在独立的/Users/zbeyens/git/slate-v2仓库中孵化包名带-v2后缀属于过渡命名用于与旧版 legacy 包共存、区分。过渡期结束后-v2后缀反而成了历史包袱它让最终消费者和 Agent 难以分辨哪个才是真身也让文档、示例、测试与构建配置里散落着两套命名。前序计划 docs/plans/2026-04-06-slate-v2-hard-cut-legacy-coexistence.md 已经完成了硬切割的第一步把slate-v2从共存仓库改造成替换候选仓库删除了 legacy 工作区包、legacy 站点示例、legacy Playwright 测试以及 phase6 兼容脚本。那一步明确把包重命名切割列为后续步骤Non-Goals 中写明 no package rename cut yet。而本文的主角rename-cut计划正是紧随其后的第二步——只做重命名不做任何功能变更。因此这次 rename cut 的定位非常清晰它是一次纯命名的收敛操作目标是把替换候选栈以最终名字正式落地。二、目标Goal过渡命名 → 最终命名计划的 Goal 原文定义如下Rename the surviving replacement-candidate stack in/Users/zbeyens/git/slate-v2from transitional*-v2names to final names.即把slate-v2仓库中幸存下来的替换候选栈从过渡期*-v2命名统一改为最终命名。注意surviving幸存一词——它承接了 hard-cut 计划的删减逻辑只有通过硬切割存活下来的包才参与重命名被删除的 legacy 包绝不借重命名复活。从验收标准可以反推出完整的旧→新命名映射过渡期命名旧最终命名新slate-v2slateslate-react-v2slate-reactslate-dom-v2slate-domslate-history-v2slate-history这四组包名是本次切割的核心对象也是后续所有改动面的主键。三、范围Scope重命名需要动到哪些地方重命名从来不是改一下目录名这么简单。该计划把改动范围明确列为五类这五类几乎覆盖了一个 monorepo 包改名的全部触点包目录与包名package directories and package names磁盘上的packages/slate-v2→packages/slate等目录重命名package.json中的name字段同步改为最终名字。imports、tsconfig refs、rollup 配置、workspace 依赖源码中所有import ... from slate-v2/...式引用TypeScript project referencestsconfig.json中的referencesrollup 打包配置中维护的包列表monorepo workspace 依赖声明如workspace:*协议下的依赖名。示例 / 测试文件名与路由 idexample/test filenames and route ids示例组件文件若以slate-v2-*模式命名需要去掉前缀Playwright 测试文件名同步站点示例路由 idroute id跟着改名。剪贴板 / 浏览器 payload 命名clipboard/browser payload naming序列化到剪贴板、或浏览器插件间传递的 payload 中的包名标识也要同步否则改名后可能出现历史载荷与新包名不匹配的问题。plate-2中 Slate v2 文档与 spec 引用docs/spec references计划文档、spec 文档中凡是把包写作slate-v2、slate-react-v2等旧名的地方统一修正为最终命名。与范围对应的另一面是非目标Non-Goals计划明确声明本次切割不引入任何新的运行时功能no new runtime features不做 React 19 行为相关的工作只处理微不足道的连带影响no React 19 behavior work beyond trivial fallout不扩大 benchmark 覆盖面no benchmark widening。这条边界保证了 rename cut 是原子化的评审者可以确信这次改动纯粹是命名收敛不会夹带功能变更。四、验收标准Acceptance如何判定重命名成功计划给出了两条硬性验收条件是判断切割是否真正完成的金标准活动源码图中不再存在存活引用在活动源码图active source graph中不得再出现slate-v2、slate-react-v2、slate-dom-v2、slate-history-v2这几个名字——唯一例外是刻意保留的历史文档intentional historical docs。改名后的依赖图全链路验证通过在重命名后的依赖图上install / build / type / test / browser proof 必须全部存活。第一条是静态验收grep 层面可验证第二条是动态验收工具链层面可验证。两者缺一不可即使全局搜不到旧名如果构建或类型检查失败切割也不算完成。五、执行进展Progress实际切了什么计划status: completed记录的实际执行进展如下5.1 包目录重命名将/Users/zbeyens/git/slate-v2/packages下幸存的包目录改为最终命名slateslate-reactslate-domslate-history5.2 示例、组件与 Playwright 文件名去slate-v2-*化将幸存示例、组件与 Playwright 文件名从旧的slate-v2-*模式重命名消除文件名层面的过渡期痕迹。5.3 依赖图重接线重接线rewired了以下全部触点imports源码导入路径tsconfig refsTypeScript project referencesrollup 配置打包包列表workspace deps工作区依赖声明example ids示例路由 idbrowser payload 命名剪贴板/浏览器载荷标识。5.4 验证链条改名后执行了六层验证全部通过install安装解析成功workspace 依赖闭合example typecheck示例代码类型检查通过rollup build打包构建通过runtime tests运行时测试通过Next buildNext.js 站点构建通过local browser proof本地浏览器验证通过。这六层恰好与验收标准中的install/build/type/test/browser proof survives一一对应说明执行与验收是闭环的。六、仓库现状印证最终命名在 plate 仓库中的落点重命名切割在独立仓库完成后替换候选栈最终以正式命名汇入 plate 主仓库。当前仓库可以观察到以下与计划目标一致的实况最终包名已落地packages/slate/package.json 中name: platejs/slate包目录为packages/slate不再存在任何slate-v2目录或platejs/slate-v2包名。源码结构清晰packages/slate/src/index.ts 作为 barrelsby 自动生成的出口统一导出create-editor、slate-dom、types、interfaces、slate-history、utils其中 slate-dom.ts 与 slate-history 均以正式名在packages/slate内部组织。工具链脚本统一package.json中build、test、typecheck等均通过plate-pkg p:*子命令驱动构建、测试、类型检查脚本与包名解耦便于继续演进。这印证了计划中无存活*-v2引用的验收在当前活动源码图中过渡期命名已被最终命名完全替代。而 docs/slate-v2/overview.md2026-04-18status: active进一步表明packages/slate已成为后续原生事务引擎 / snapshot-store-first API重设计的活动载体重命名切割为其提供了干净的名字基底。七、与相邻计划的协同rename cut 在迁移程序中的位置rename cut 不是孤立操作它与同一时期的多份计划构成一个递进序列理解这条链路有助于把握重命名的边界硬切割与 legacy 共存处理status: completed 先把slate-v2改造成替换候选仓库删除 legacy 包slate、slate-react、slate-dom、slate-history、slate-hyperscript的旧实现、legacy 示例、legacy Playwright 测试与 phase6 脚本。其 Recovery Ledger 立下硬规则不得把已删除的 legacy 表面恢复进slate-v2对比数据一律以/Users/zbeyens/git/slate为 legacy oracle且恢复只能通过刻意的包重命名/切换这为 rename cut 提供了合法性依据。重命名切割本文主题status: completed 在硬切割清理干净的基底上对幸存栈执行纯命名收敛。包名规范化status 完成 跟进清理 active spec 文档中的陈旧包名core-foundation-spec.md、dom-runtime-boundary-spec.md、chunking-review.md中残留的slate-v2、slate-dom-v2、slate-react-v2表述被规范为实际包名并以prettier --check grep 双重验证。Phase 10 声明冻结status: complete 进一步收敛文档措辞重复把权威结论收敛到 release-readiness-decision.md权威 blocker 列表收敛到 archive 文档。可见 rename cut 处于删旧hard cut→ 改名rename cut→ 文档规范化name normalization→ 声明收敛claim freeze的中间环节是命名体系收敛的关键一步。八、方法论沉淀在 monorepo 中执行一次安全的包重命名切割从该计划可以提炼出一套可复用的 rename cut 方法论适合在其他仓库中照搬步骤 1先切割再改名确保仓库中只保留幸存栈删除/隔离 legacy 实现否则改名会与清理混在一起评审与回滚都困难。步骤 2建立旧→新命名映射表以四列包目录、包名、示例路由 id、payload 标识列出所有旧名出现位置避免遗漏*-v2模式在非预期位置的残留。步骤 3按改动面分批执行按范围章节的顺序推进目录/包名 → imports/tsconfig refs/rollup/workspace deps → 示例/测试文件与路由 id → 剪贴板/浏览器 payload → 文档引用。每批完成后跑一次 grep 确认该面无残留。步骤 4执行全链路验证复用本计划的六层验证链install → example typecheck → rollup build → runtime tests → Next build → local browser proof。任何一层失败都意味着改名存在未覆盖的触点。步骤 5以 grep 做静态终检对slate-v2、slate-react-v2、slate-dom-v2、slate-history-v2做全仓库搜索只允许历史文档中存在活动源码图必须清零。步骤 6立下恢复规则参考 hard-cut 计划的 Recovery Ledger 思路明确改名后不得因后续需求顺手恢复旧名/旧包防止命名体系倒退。九、验证命令参考在执行与验收环节可结合当前仓库实际工具链执行以下检查命令基于 packages/slate/package.json 中确认存在的脚本# 1. 全仓库残留旧名检查静态验收历史文档除外 grep -rn slate-react-v2\|slate-dom-v2\|slate-history-v2 packages docs --include*.ts --include*.tsx --include*.json --include*.md # 2. 包级构建plate-pkg 统一驱动 bun run --cwd packages/slate build # 3. 包级类型检查 bun run --cwd packages/slate typecheck # 4. 包级测试 bun run --cwd packages/slate test # 5. 示例类型检查与站点构建Next build # 在 apps/www 下执行 typecheck 与 next build以上命令为仓库脚本名与运行方式的合理推导具体以 packages/slate/package.json 中的scripts段与实际包管理器bun/pnpm为准。十、总结slate-v2-rename-cut计划演示了一次教科书级的 monorepo 包重命名操作目标单一只改名不加功能、范围穷尽目录、包名、imports、tsconfig、rollup、workspace、示例、路由、payload、文档全覆盖、验收双轨grep 静态清零 六层动态验证、执行闭环进展与验收一一对应。当前仓库中platejs/slate的落地状态正是这次切割成功的历史证据。对于任何需要在大型仓库中安全收敛过渡命名的团队本文的映射表、改动面清单与验证链都值得直接复用。延伸阅读Slate v2 主路线图master-roadmap当前队列与路线图的权威入口Slate v2 概览迁移程序的前门文档说明packages/slate的后续演进方向硬切割与 legacy 共存处理rename cut 的前置清理计划包名规范化rename cut 的文档跟进计划Plate Slate 扩展包源码最终命名落地实例【免费下载链接】plateRich-text editor with AI and shadcn/ui项目地址: https://gitcode.com/GitHub_Trending/pl/plate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表