为 EmDash 做贡献

本页内容

EmDash 是一个 pnpm monorepo。主包是 packages/core,以 emdash 的名称发布;它包含 Astro 集成、REST API、数据库层、模式管理和插件系统。React 管理后台 UI 位于 packages/admin。

本页为你提供搭建可用开发环境的最快路径。CONTRIBUTING.md 是先决条件、仓库结构、贡献政策、必需的检查、changeset 以及拉取请求要求的权威来源。

本地设置

  1. 克隆、安装并构建工作区。

    git clone https://github.com/emdash-cms/emdash.git
    cd emdash
    pnpm install
    pnpm build
  2. 启动主要的开发演示。

    cd demos/simple
    pnpm dev

    该演示运行在 Node.js 上,使用 SQLite,地址为 http://localhost:4321。在第一次请求时,它会应用 seed/seed.json 中的 schema;下一步中的开发绕过还会添加它的示例内容。

  3. 打开管理后台。

    要获得最快的本地设置,请打开开发绕过。它会运行迁移、创建一个开发用管理员、让你登录,并重定向到管理后台。

    如果想改为测试通行密钥(passkey)的设置流程,请打开管理后台。设置向导会创建数据库、运行迁移,并提示你创建管理员账户。

开发工作流

监视模式

在运行演示的同时修改 packages/core 时,请使用两个终端,这样包会自动重新构建:

# Terminal 1 — rebuild packages/core on change
cd packages/core && pnpm dev

# Terminal 2 — run the demo
cd demos/simple && pnpm dev

检查

在提交之前,请在仓库根目录运行必需的检查:

pnpm typecheck    # TypeScript
pnpm lint         # full type-aware lint
pnpm format       # auto-format with oxfmt and Prettier

测试

所有测试

pnpm test

仅核心

cd packages/core && pnpm test

监视模式

cd packages/core && pnpm test --watch

E2E

pnpm test:e2e    # starts its own server

测试使用真实的内存中 SQLite 数据库,而不是数据库模拟。每个测试都会获得一个全新的数据库。

选择贡献路径

缺陷修复、文档和翻译可以直接提交拉取请求。缺陷修复必须包含一个能够复现该问题的失败测试。翻译贡献请遵循翻译工作流。

功能和重构需要先有经维护者批准的 Discussion,才能开始实现。没有获得批准的功能拉取请求会被关闭。开始工作之前,请阅读完整的贡献政策,以便了解适用哪条路径。

文档的更改还必须遵循文档风格指南。

要了解贯穿 EmDash 的主要执行路径,请阅读架构(内部结构)。代码层面的模式和不变量记录在 AGENTS.md 中。