跳转到内容

开发命令

在执行 pnpm install --frozen-lockfile 之后,在代码库根目录下运行以下命令。公开的相关包位于 packages/* 目录下;Storybook 应用、共享工具链、语料库与基准测试工作区属于私有工作区。各脚本按功能划分定义在根目录的 package.json 中。

命令适用范围与前置要求
pnpm storybook使用工作区源码启动 React、Vue 及组合入口。无需预先构建相关包。
pnpm storybook:react / pnpm storybook:vue启动单一渲染器的组件目录。
pnpm build构建全部七个公开相关包并执行其分发断言。不包含 Storybook 和基准测试应用。
pnpm lint / pnpm lint:fix检查 ESLint 规范 / 自动修复可修复项。
pnpm format:check / pnpm format检查格式化 / 使用 Prettier 重新格式化文件。
pnpm typecheck同时运行工作区和 Storybook 的类型检查。需先构建相关包。
pnpm typecheck:packages递归执行工作区类型检查,包含公开相关包、语料库和基准测试应用。
pnpm typecheck:storybookStorybook 配置、Stories、共享工具链与根目录 Vitest 配置的类型检查。
pnpm test:unit使用各相关包自身配置递归运行工作区单元测试套件。需先构建相关包。不运行 Storybook 浏览器套件。

test:unit 会清除 CORE_SEQUENCE_SEEDCORE_SEQUENCE_PATHCORE_SEQUENCE_RUNS 环境变量,使聚合测试门禁使用源码中提交的核心序列预算。若需进行定向重放,请直接使用 core 相关包的测试,具体见核心测试。根目录的 Vitest 配置仍可用于针对性运行,但 CI 和预检会执行 test:unit,随后执行独立的 Storybook 套件。

命令验证内容
pnpm check:overrides工作区依赖覆盖(overrides)配置。
pnpm check:public-api构建后的 engine、core 和 Vue 公开类型声明快照与边界规则。需要构建产物;--update 可重写快照供审查。这不是针对每个包的 API 快照门禁。
pnpm test:core-contracts独立的 core 验证门禁:构建其依赖闭包,检查类型并使用受保护的序列设置运行所有 core 测试。
pnpm test:command-control预检快速失败行为、构建复用机制及受保护的单元测试设置。
pnpm test:soak-control压测运行器控制逻辑与改动影响分类。不会启动实际压测。
pnpm test:release-control发布认证与发布控制逻辑。不会发布相关包。
pnpm packcheck对所有公开相关包分发产物执行 attw 与 publint 检查。需要先完成构建。
pnpm test:packed-consumers打包并在隔离环境中安装相关包,验证运行时与类型入口点。需要构建产物及依赖安装网络访问权限。
pnpm test:document-lifetimeChromium 下 React 并发文档所有权与垃圾回收回归测试。
pnpm test:vue-browserChromium 下 Vue 服务端渲染、水合及浏览器适配器回归测试。

在运行浏览器检查前,请先使用 pnpm exec playwright install chromium 安装浏览器。适配器浏览器检查需要已构建的相关包依赖;Vue 检查还会读取其生成的 CSS 样式。

命令运行内容
pnpm test:storybook依次运行 React/Mantine 和 Vue 的浏览器 Story 测试套件。
pnpm test:storybook:react / pnpm test:storybook:vue运行单一渲染器的浏览器 Story 测试套件。
pnpm test:storybook:dev进程管理回归测试、开发组合、源码/CSS 热更新与关闭检查。要求端口 6006–6008 保持空闲。该命令会临时修改并还原源文件,请在空闲的代码检出分支上运行。
pnpm build:storybook构建公开相关包,然后生成组合后的静态站点。
pnpm build:storybook --skip-build复用当前源码已构建的相关包。仅跳过相关包构建,不跳过站点构建。切勿在分发产物陈旧或缺失时使用。
pnpm test:storybook:site验证嵌套部署路径下的现有静态导出,包括导航、Controls 面板与隔离 iframe。

若需导出公开文档,使用 STORYBOOK_DOCS_EXPORT=1 pnpm build:storybook。目录结构与部署细节请参阅 Storybook

终端窗口
pnpm preflight

预检会在遇到第一个失败步骤时立即终止。它会依次检查配置、Lint 与代码格式化;构建一次公开相关包;检查所有类型与公开 API 快照;运行控制与单元测试;验证打包分发产物与外部使用端;运行浏览器 Stories;导出并验证静态站点;验证开发模式;最后运行 React 生命周期与 Vue 浏览器回归测试。

构建、工作区类型检查与单元测试步骤覆盖了与独立 core 门禁相同的核心检查,无需重复构建与重新运行 core。CI 保留了一个独立的纯 core 任务,用于验证该相关包能够独立完成验证。发布验证同样使用共享的单元测试与类型检查命令。

预检需要已安装 Chromium、空闲的 Storybook 端口以及干净的检出状态。它不会安装依赖、修改版本、发布相关包、运行性能基准测试或启动长时间压测。它不能替代发布工作流中的压测决策与批准流程。

命令用途
pnpm check:soak-coverage验证压测覆盖映射表。
pnpm check:soak-impact报告自前一个版本标签以来的改动是否需要压测;支持 --base--head 参数用于自定义审计。
pnpm check:release-soak --evidence <run-dir>...验证干净的发布候选版本,并在需要时验证本地发布的测试证据。
pnpm --filter @ai-markdown/engine soak启动引擎压测运行器。
pnpm --filter @ai-markdown/engine soak:watch读取压测执行进度。
pnpm --filter @ai-markdown/engine soak:aggregate聚合并验证运行结果。
pnpm --filter @ai-markdown/engine fuzz:splice运行专项拼接模糊测试(splice fuzz test)。

压测配置与测试证据要求请参阅压测覆盖。引擎的 soak:coverage 是检查覆盖映射表的本地入口。

命令用途
pnpm bench:unitVitest 微基准测试;当前为 LaTeX 预处理器。
pnpm bench:web生产环境浏览器基准测试场景。
pnpm bench:web:selftest验证浏览器基准测试套件本身。
pnpm bench:web:scale文档规模伸缩性测试,每 24 个字符推送一次。
pnpm bench:web:scale:cold文档规模伸缩性测试,单次完整更新。
pnpm bench:web:scale:steps文档规模伸缩性测试,固定 100 次更新。
pnpm version-packages <version>重写根目录和五个统一版本发布相关包的版本及相关引用。高亮插件与代码语言探测器保持独立版本。该命令不会发布;执行后需同步 lockfile 并进行审查。

在解读性能测试结果前,请参阅浏览器基准测试指南。实际的 npm 发布属于发布工作流的职责范畴。

现有命令仍受支持。新文档和 CI 使用以下规范名称:

现有命令规范命令
build-storybookbuild:storybook
test:storybook-devtest:storybook:dev
test:storybook-sitetest:storybook:site
benchbench:unit

typecheck 现已覆盖工作区与 Storybook。使用 typecheck:storybook 可限定在旧的较窄范围。根目录不提供有歧义的 test 别名:请明确选择单元测试、Storybook、适配器或完整预检。

pnpm test:vue-browser:compat 会在 Firefox 与 WebKit 下运行 Vue 的水合、引用、自定义、平滑流式、光标和卸载契约。请使用 pnpm exec playwright install firefox webkit --with-deps 安装它们。Chromium 命令保留了额外的强制 GC 压力检查。CI 和 Release 还在 Node 20.19.0、22.12.0 和 24.20.0 上运行打包使用端测试;前两者为声明的运行时最低版本要求。这些任务在工作区外使用真实的 tarball 包执行。