# 贡献指南 非常感谢你抽出时间来帮助改进 Certimate!以下是向 Certimate 提交 Pull Request 时的操作指南。 我们需要保持敏捷和快速迭代,同时也希望确保贡献者能获得尽可能流畅的参与体验。这份贡献指南旨在帮助你熟悉代码库和我们的工作方式,让你可以尽快进入有趣的开发环节。 索引: - [开发](#开发) - [要求](#要求) - [后端代码](#后端代码) - [前端代码](#前端代码) - [提交 PR](#提交-pr) - [提交流程](#提交流程) - [获取帮助](#获取帮助) --- ## 开发 ### 要求 - Go 1.24+(用于修改后端代码) - Node.js 22.0+(用于修改前端代码) ### 后端代码 Certimate 的后端代码是使用 Golang 开发的,是一个基于 [Pocketbase](https://github.com/pocketbase/pocketbase) 构建的单体应用。 假设你已经对 Certimate 的后端代码做出了一些修改,现在你想要运行它,请遵循以下步骤: 1. 进入根目录; 2. 安装依赖: ```bash go mod vendor ``` 3. 启动本地开发服务: ```bash go run main.go serve ``` 这将启动一个 Web 服务器,默认运行在 `http://localhost:8090`,并使用来自 `/ui/dist` 的预构建管理页面。 > 如果你遇到报错 `ui/embed.go: pattern all:dist: no matching files found`,请参考“[前端代码](#前端代码)”这一小节构建 WebUI。 **在向主仓库提交 PR 之前,你应该:** - 使用 [gofumpt](https://github.com/mvdan/gofumpt) 格式化你的代码。推荐使用 VSCode,并安装 gofumpt 插件,以便在保存时自动格式化。 - 为你的改动添加单元测试或集成测试(使用 Go 标准库中的 `testing` 包)。 ### 前端代码 Certimate 的前端代码是使用 TypeScript 开发的,是一个基于 [React](https://github.com/facebook/react) 和 [Vite](https://github.com/vitejs/vite) 构建的单页应用。 假设你已经对 Certimate 的前端代码做出了一些修改,现在你想要运行它,请遵循以下步骤: 1. 进入 `/ui` 目录; 2. 安装依赖: ```bash npm install ``` 3. 启动 Vite 开发服务器: ```bash npm run dev ``` 这将启动一个 Web 服务器,默认运行在 `http://localhost:5173`,你可以通过浏览器访问来查看运行中的 WebUI。 完成修改后,运行以下命令来构建 WebUI,以便它能被嵌入到 Go 包中: ```bash npm run build ``` **在向主仓库提交 PR 之前,你应该:** - 使用 [ESLint](https://github.com/eslint/eslint) 格式化你的代码。推荐使用 VSCode,并安装 ESLint+Prettier 插件,以便在保存时自动格式化。 ## 提交 PR 在提交 PR 之前,请先创建一个 Issue 来讨论你的修改方案,并等待来自项目维护者的反馈。这样做有助于: - 让我们充分理解你的修改内容; - 评估修改是否符合项目路线图; - 避免重复工作; - 防止你投入时间到可能无法被合并的修改中。 ### 提交流程 1. Fork 本仓库; 2. 在提交 PR 之前,请先发起 Issue 讨论你想要做的修改; 3. 为你的修改创建一个新的分支; 4. 请为你的修改添加相应的测试; 5. 确保你的代码能通过现有的测试; 6. 请在 PR 描述中关联相关 Issue; 7. 等待合并! > [!IMPORTANT] > > 建议为每个新功能或 Bug 修复创建一个从 `main` 分支派生的新分支。如果你计划提交多个 PR,请保持不同的改动在独立分支中,以便更容易进行代码审查并最终合并。 > > 保持一个 PR 只实现一个功能或修复。 ## 获取帮助 如果你在贡献过程中遇到困难或问题,可以通过 GitHub Issues 向我们提问。