mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 04:22:33 +08:00
chore: add CONTRIBUTING.md
This commit is contained in:
251
.github/CONTRIBUTING.md
vendored
Normal file
251
.github/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,251 @@
|
||||
# 贡献指南
|
||||
|
||||
感谢你考虑为 AcePanel 做出贡献!这份文档将帮助你了解如何参与到项目中来。
|
||||
|
||||
## 目录
|
||||
|
||||
- [行为准则](#行为准则)
|
||||
- [我能做什么贡献?](#我能做什么贡献)
|
||||
- [开发环境设置](#开发环境设置)
|
||||
- [开发流程](#开发流程)
|
||||
- [代码规范](#代码规范)
|
||||
- [提交信息规范](#提交信息规范)
|
||||
- [Pull Request 流程](#pull-request-流程)
|
||||
|
||||
## 行为准则
|
||||
|
||||
参与本项目即表示你同意遵守我们的行为准则。请保持友善、尊重和专业。
|
||||
|
||||
## 我能做什么贡献?
|
||||
|
||||
你可以通过以下方式为 AcePanel 做出贡献:
|
||||
|
||||
- 🐛 报告 Bug
|
||||
- 💡 提出新功能建议
|
||||
- 📝 改进文档
|
||||
- 🔧 修复 Bug
|
||||
- ✨ 实现新功能
|
||||
- 🧪 编写测试
|
||||
- 🌍 翻译面板及文档
|
||||
|
||||
## 开发环境设置
|
||||
|
||||
### 前置要求
|
||||
|
||||
- Go 1.25 或更高版本
|
||||
- Node.js 22+ 和 pnpm
|
||||
- Git
|
||||
- 本地开发环境没有特殊要求,但必须在 Linux 上运行和测试
|
||||
- 在开发及测试前端项目时,需修改面板配置文件打开 debug 模式或者关闭安全入口
|
||||
|
||||
### 克隆仓库
|
||||
|
||||
```bash
|
||||
git clone https://github.com/acepanel/panel.git
|
||||
cd panel
|
||||
```
|
||||
|
||||
### 后端设置
|
||||
|
||||
1. 安装 Go 依赖:
|
||||
|
||||
```bash
|
||||
go mod download
|
||||
```
|
||||
|
||||
2. 复制配置文件:
|
||||
|
||||
```bash
|
||||
cp config.example.yml config.yml # 按需修改配置
|
||||
```
|
||||
|
||||
3. 构建项目:
|
||||
|
||||
```bash
|
||||
go build -o ace ./cmd/ace # 主程序
|
||||
go build -o cli ./cmd/cli # CLI 工具
|
||||
```
|
||||
|
||||
### 前端设置
|
||||
|
||||
1. 进入前端目录:
|
||||
|
||||
```bash
|
||||
cd web
|
||||
```
|
||||
|
||||
2. 安装依赖:
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
3. 配置开发环境:
|
||||
|
||||
```bash
|
||||
cp .env.production .env # 按需修改
|
||||
cp settings/proxy-config.example.ts settings/proxy-config.ts # 配置 Linux 测试服务器信息
|
||||
pnpm run gen-auto-import # 生成自动导入文件,开发中无需导入 vue alova 等常用包
|
||||
pnpm run gettext:compile # 预编译翻译文件,否则开发中没有翻译
|
||||
```
|
||||
|
||||
4. 启动开发服务器:
|
||||
|
||||
```bash
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## 开发流程
|
||||
|
||||
### 项目架构
|
||||
|
||||
AcePanel 采用类 DDD 分层架构,依赖关系为:route → service → biz ← data
|
||||
|
||||
主要目录结构:
|
||||
|
||||
- `cmd/` - 程序入口(ace 主程序、cli 工具)
|
||||
- `internal/route/` - HTTP 路由定义
|
||||
- `internal/service/` - 服务层(处理 HTTP 请求/响应)
|
||||
- `internal/biz/` - 业务逻辑层(定义业务接口和领域模型)
|
||||
- `internal/data/` - 数据访问层(实现 biz 接口)
|
||||
- `pkg/` - 工具函数和通用包
|
||||
- `web/` - Vue 3 前端项目
|
||||
|
||||
### 开发新功能的标准流程
|
||||
|
||||
1. **在 `internal/route/` 中添加路由**
|
||||
- 按需注入需要的服务
|
||||
|
||||
2. **在 `internal/service/` 中实现服务方法**
|
||||
- 处理请求验证和响应格式化
|
||||
- 使用 `Success()` 返回成功响应
|
||||
- 使用 `Error()` 返回错误响应
|
||||
- 使用 `ErrorSystem()` 返回系统严重错误
|
||||
|
||||
3. **在 `internal/biz/` 中定义业务接口**
|
||||
- 定义 Repository 接口
|
||||
- 定义领域模型结构体
|
||||
- 保持接口简洁明确
|
||||
|
||||
4. **在 `internal/data/` 中实现 biz 接口**
|
||||
- 创建 repo 结构体
|
||||
- 实现构造函数
|
||||
- 实现所有接口方法
|
||||
|
||||
5. **使用 Wire 进行依赖注入**
|
||||
- 在对应的 `包名.go` 文件中添加 Provider
|
||||
- 运行 `go generate ./...` 生成依赖注入代码
|
||||
|
||||
## 代码规范
|
||||
|
||||
**所有代码注释必须使用简体中文**
|
||||
|
||||
面板基于 Gettext 搭建了自动化国际化流程,所有对用户可见的文本均需支持国际化,原文使用英文。
|
||||
|
||||
开发中 Go 代码中注入 `*gotext.Locale`,前端导入 `useGettext` 进行翻译。
|
||||
|
||||
### Go 代码规范
|
||||
|
||||
- 遵循 Go 官方代码风格
|
||||
- 使用 `gofmt` 格式化代码和 `golangci-lint` 检查代码质量
|
||||
- 函数和方法注释必须以函数名开头,复杂逻辑应添加注释说明
|
||||
|
||||
### 前端代码规范
|
||||
|
||||
- 使用 Vue 3 Composition API
|
||||
- 遵循项目已有的组件结构和编码风格
|
||||
- 使用 TypeScript 进行类型检查
|
||||
- 运行 `pnpm lint` 检查代码质量
|
||||
|
||||
## 提交信息规范
|
||||
|
||||
我们使用语义化的提交信息,格式为:
|
||||
|
||||
```
|
||||
<类型>(<范围>): <简短描述>
|
||||
|
||||
<详细描述>(可选)
|
||||
|
||||
<关联的 Issue>(可选)
|
||||
```
|
||||
|
||||
### 类型
|
||||
|
||||
- `feat`: 新功能
|
||||
- `fix`: Bug 修复
|
||||
- `docs`: 文档更新
|
||||
- `style`: 代码格式调整(不影响功能)
|
||||
- `refactor`: 代码重构
|
||||
- `perf`: 性能优化
|
||||
- `test`: 测试相关
|
||||
- `chore`: 构建/工具链相关
|
||||
|
||||
### 示例
|
||||
|
||||
```
|
||||
feat(website): 添加网站备份功能
|
||||
|
||||
实现了网站配置和数据的自动备份功能,支持:
|
||||
- 按计划自动备份
|
||||
- 手动立即备份
|
||||
- 备份文件压缩存储
|
||||
|
||||
Closes #123
|
||||
```
|
||||
|
||||
```
|
||||
fix(apache): 修复代理配置解析错误
|
||||
|
||||
修复了在解析包含特殊字符的代理配置时的崩溃问题
|
||||
```
|
||||
|
||||
## Pull Request 流程
|
||||
|
||||
### 1. Fork 项目
|
||||
|
||||
点击 GitHub 页面右上角的 "Fork" 按钮。
|
||||
|
||||
### 2. 创建开发分支
|
||||
|
||||
```bash
|
||||
git checkout -b your-develop-name
|
||||
```
|
||||
|
||||
### 3. 进行开发
|
||||
|
||||
- 遵循代码规范
|
||||
- 中文编写必要的代码注释
|
||||
- 添加必要的测试,目前主要针对 pkg 目录下的公共包
|
||||
- 若进行大范围的重构/修改,请提前与维护者沟通
|
||||
|
||||
### 4. 提交更改
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "feat(scope): 描述你的更改"
|
||||
```
|
||||
|
||||
### 5. 推送到你的 Fork
|
||||
|
||||
```bash
|
||||
git push origin your-develop-name
|
||||
```
|
||||
|
||||
### 6. 创建 Pull Request
|
||||
|
||||
1. 访问你 Fork 的仓库
|
||||
2. 点击 "New Pull Request"
|
||||
3. 选择你的分支
|
||||
4. 填写 PR 检查单并点击 "Create Pull Request"
|
||||
|
||||
### 7. 等待审查
|
||||
|
||||
当 Pull Request 开发完毕后,请为其添加 🚀 Review Ready 标签,维护者将及时进行评审并提供反馈。请及时响应评论并根据需要进行修改。
|
||||
|
||||
## 许可证
|
||||
|
||||
通过向本项目贡献代码,你同意你的贡献将在与项目相同的许可证下发布。
|
||||
|
||||
---
|
||||
|
||||
再次感谢你的贡献!🎉
|
||||
Reference in New Issue
Block a user