Univer 仓库责任边界图:职责划分、对外提供包、跨仓依赖与发布契约
发布时间:2026/9/14 3:17:25 作者:尧图编辑部 阅读量:1,286

Univer 仓库责任边界图职责划分、对外提供包、跨仓依赖与发布契约【免费下载链接】univerUniver is a full-stack framework for creating and editing spreadsheets / word processor / presentation on both web and server.项目地址: https://gitcode.com/GitHub_Trending/un/univerDREAMNUM.md 是 Univer 开源仓库dream-num/univer的“责任边界图”ownership map它集中声明了该仓库拥有什么、对外提供哪些包与事件、依赖哪些外部仓库以及这些事实变化时应同步更新的规则。读完本文你能快速定位 Univer 各能力域的归属、从 monorepo 中找到对应的包契约文件并理解其版本发布与跨仓同步的完整链路。文档定位一份面向 Agent 与贡献者的仓库契约DREAMNUM.md 不是功能使用手册而是仓库级的“元文档”由四部分构成Responsibilities职责仓库拥有什么能力以及明确不拥有什么商业 Pro 层Provides提供物对外发布的 npm 包与事件以及每类提供物对应的契约文件Depends on依赖跨仓库的上下游依赖Authoritative sources权威来源 Update contract更新契约事实查证入口与文档自身的保鲜规则。这种写法把“代码在哪个包里、契约以哪个文件为准、什么时候必须改这份文档”显式化便于贡献者、自动化 Agent 和新成员在不通读全部源码的情况下建立正确的仓库心智模型。Responsibilities开源仓库拥有什么不拥有什么DREAMNUM.md 的 Owns 一节列出五个能力域每一项都指向仓库内可验证的契约位置能力域内容契约/佐证位置核心运行时开源 Univer 运行时、插件系统、命令与服务基础设施、Facade API、公式引擎、Canvas 渲染引擎README.md 的项目介绍章节、packages/core/package.json办公模型与 UISheets、Docs、Slides 的开源模型、编辑能力与 UI 插件含共享的绘图、评论、校验、格式化与国际化基础设施packages/ 目录、README.md 的开源/Pro 边界说明多运行时集成浏览器、Node.js、Web Worker 集成路径React 系 UI以及 Vue 3、Web Component 适配器README.md 的兼容性说明预设与示例第一方开源包预设以及用于验证 SDK 的示例与测试工程pnpm-workspace.yaml、README.md 的仓库导览API 兼容规则stable / experimental / internal / deprecated 四类接口的兼容策略docs/API_STABILITY.md其中边界声明值得单独强调本仓库不拥有 Univer Pro 的商业协作、导入/导出、服务端与企业能力这些是独立扩展层在 README.md 的开源与 Pro 边界章节中另行描述。也就是说如果你在开源仓库中找不到实时协作或文件导入导出的实现这不是缺失而是刻意划出的商业边界。工作区定义能力域的物理落点pnpm-workspace.yaml 把上述能力域映射为具体的包目录packages: - common/* - examples - mockdata - presets - presets/packages/* - packages/* - tests/*可以看到packages/*承载各能力包core、sheets、engine-render 等presets与presets/packages/*承载预设集合common/*存放共享的构建工具链eslint、tsdown、tailwind 等examples与tests/*则是用于“exercise the SDK”的示例和测试工程——这与 DREAMNUM.md 中“第一方预设 示例测试工程”的职责描述完全对应。Provides对外提供的包、适配器与仓库事件DREAMNUM.md 的 Provides 一节是理解 Univer 发布面的核心按“提供物 → 说明 → 契约文件”的结构列出核心运行时包univerjs/core、univerjs/engine-formula、univerjs/engine-render核心运行时与数据模型、Facade API、公式计算、共享渲染。契约以 packages/core/package.json 等包清单为准API 以官方 API ReferenceFacade API见 DREAMNUM.md 权威来源一节为准。办公套件包univerjs/sheets、univerjs/docs、univerjs/slides及其 UI 与功能包可组合的办公模型、插件与编辑界面。对应 packages/ 目录下大量sheets-*、docs-*、slides*功能包条件格式、数据校验、过滤、公式、表格、线程评论等兼容性规则由 docs/API_STABILITY.md 约束。预设包univerjs/presets与univerjs/preset-*面向浏览器与 Node.js 集成的精选插件集合。仓库中 presets/packages 目录下可见完整的预设清单覆盖 docs、sheets 两大族的 core、drawing、hyper-link、thread-comment、conditional-formatting、data-validation、filter、find-replace、note、sort、table 等场景以及preset-docs-node-core、preset-sheets-node-core等 Node.js 无头预设。框架适配器univerjs/ui-adapter-vue3README与univerjs/ui-adapter-web-componentREADME把 Univer 的 UI 服务接入 Vue 3 与 Web Component 环境的适配层。仓库分派事件sync-univerProvides 一节还声明了一个非包类的对外提供物sync-univerrepository-dispatch 事件用于在改动进入dev分支后通知独立的 Univer Pro 仓库。其实现契约是 .github/workflows/dispatch-sync-univer-pro.ymlon: push: branches: - dev jobs: dispatch-sync: if: github.repository dream-num/univer steps: - name: Dispatch sync event to univer-pro uses: peter-evans/repository-dispatchv4 with: repository: dream-num/univer-pro event-type: sync-univer client-payload: { ref: ${{ github.ref_name }}, sha: ${{ github.sha }} }从源码看该工作流仅在dev分支 push 时触发通过repository_dispatch把ref与sha作为 payload 投递给 Pro 仓库——这正是“开源改动 → 商业扩展层同步”这条跨仓流水线的具体落点。Depends on两条跨仓库依赖DREAMNUM.md 声明了仓库对外的两条上游依赖每条都给出了验证契约的文件univer-icons 仓库拥有 Univer UI 包消费的 React 图标组件与 SVG 资产。契约佐证packages/ui/package.jsonuniverjs/ui包清单与 packages/sheets-conditional-formatting/package.jsonSVG 资产依赖。verso 仓库拥有本仓库使用的 workspace 发布 CLI负责给 Univer 各包定版与打标签。契约佐证根 package.json 中的release: verso脚本与 devDependencyamamo/verso当前版本 1.2.0。verso 在本仓库中的实际配置仓库根的 verso.toml 展示了这条依赖的具体配置[version] root_package package.json [workspaces] patterns [ common/*, packages/*, presets, presets/packages/*, ] include_root true [changelog] infile CHANGELOG.md preset angular [git] commit_message chore(release): release v${version} tag_name v${version} push follow-tags从配置看verso 的定版范围覆盖了common/*、packages/*与全部 presetschangelog 以 angular preset 写入 CHANGELOG.md发布提交信息与标签格式统一为chore(release): release vversion和vversion——标签格式正是下游 npm 发布工作流的触发条件见下节。Authoritative sources事实查证入口DREAMNUM.md 把“去哪查证”也列为契约的一部分列出了五类权威来源产品文档docs.univer.ai、API ReferenceUniver Facade API、开发指引README.md 与 CONTRIBUTING.md、包契约packages/、presets/、docs/API_STABILITY.md、npm 发布来源.github/workflows/release-npm.yml以及安全策略SECURITY.md。API 稳定性策略要点docs/API_STABILITY.md 是 DREAMNUM 所引用的核心兼容性契约定义了四级稳定性Stable从公开包入口导出且无实验性警告、被 API Reference/README/示例文档化的接口如univerjs/core、univerjs/sheets、univerjs/presets入口与 Facade API未经弃用路径不得不兼容地移除或修改Experimental行为、命名、参数或包位置可能变化的接口需在文档或 JSDoc 中标注不稳定破坏性变更仍应在 release notes 中说明Internalcontrollers、views、models 等实现目录中无公开导出契约的代码不受兼容保证约束用户应用不应依赖DeprecatedJSDoc 标记deprecated并给出替代链接运行时可检测时通过ILogService输出弃用警告pre-1.0 阶段移除可发生在 minor 版本但必须记录为破坏性变更。此外该文档要求引入破坏性变更的 PR 在描述中携带BREAKING CHANGE:小节并强调所有univerjs/*包必须保持同一版本——版本混用会绕过兼容性检查在插件注册、Facade API 组合、locale、命令与共享数据模型周围产生运行时故障。npm 发布链路.github/workflows/release-npm.yml 定义了发布触发与流程on: push: tags: - v*.*.* - v*.*.*-alpha.* - v*.*.*-beta.* - v*.*.*-rc.*发布 Job 依次执行pnpm install --frozen-lockfile与pnpm build然后按标签区分通道发布alpha/beta/rc 标签走对应的 dist-tag正式版走 default tag两者均为pnpm publish --access public -r --no-git-checks --provenance带 npm provenance。结合 verso.toml 的tag_name v${version}完整链路是verso 定版并打v*标签 → 标签推送触发 release 工作流 → 构建并以 provenance 发布全部-r包这与 DREAMNUM.md 中“Package release source: npm release workflow”的声明一一对应。Update contract文档自身的保鲜规则DREAMNUM.md 末尾给出了一份自检清单——当以下任一事实变化时必须在同一变更中更新该文件仓库职责或边界变化对外跨仓库依赖变化公开包、API、协议、事件、图片或数据契约变化部署来源、运维手册或数据分级变化。这条契约让“责任边界图”不再是静态描述每当 provides 增删一个包、dep 增删一条上游依赖、或sync-univer事件语义变化时文档与代码强制同 PR 演进避免边界图与真实仓库结构漂移。小结如何把这份责任图用起来找包归属从 Provides 表的“契约”列跳到对应package.json或 packages/ 目录找兼容性依据一切 stable/experimental/internal 判定以 docs/API_STABILITY.md 为准找发布链路package.json 的release脚本 verso.toml .github/workflows/release-npm.yml 三者串联找跨仓同步.github/workflows/dispatch-sync-univer-pro.yml 是开源到 Pro 的唯一事件桥梁判断边界商业协作/导入导出/企业能力不在本仓库职责内属于独立扩展层。DREAMNUM.md 的价值正在于此它把散落在包清单、工作流与策略文档中的“谁拥有什么、以谁为准”收敛为一份可随 PR 持续更新的可执行契约。【免费下载链接】univerUniver is a full-stack framework for creating and editing spreadsheets / word processor / presentation on both web and server.项目地址: https://gitcode.com/GitHub_Trending/un/univer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考