r-util-js/docs/CONTRIBUTING.md

4.7 KiB
Raw Blame History

贡献指南

感谢你对 @r-utils 项目的关注!本文档将帮助你了解如何参与项目贡献。

开发环境要求

  • Node.js >= 18.12.0
  • pnpm >= 10.0.0

快速开始

1. Fork 并克隆仓库

# 克隆你 fork 的仓库
git clone https://gitee.com/your-username/r-util-js.git
cd r-util-js

# 安装依赖
pnpm install

2. 创建分支

# 从 master 分支创建新分支
git checkout -b feat/your-feature-name
# 或
git checkout -b fix/your-bug-fix

分支命名规范:

  • feat/xxx - 新功能
  • fix/xxx - Bug 修复
  • docs/xxx - 文档更新
  • refactor/xxx - 代码重构
  • test/xxx - 测试相关
  • chore/xxx - 构建/工具相关

3. 开发与测试

# 构建所有包Turbo
pnpm build

# 运行测试
pnpm test

# 代码检查
pnpm lint

# 代码格式化
pnpm format

4. 提交代码

本项目使用 Conventional Commits 规范,并通过 commitizen + cz-git 提供交互式提交体验。

使用交互式提交(推荐)

# 暂存你的更改
git add .

# 使用交互式提交
pnpm commit

交互式提交会引导你完成以下步骤:

  1. 选择提交类型 - feat/fix/docs 等
  2. 输入影响范围 - 可选,如 common/vue3/uni-app
  3. 输入简短描述 - 必填,简明扼要说明改动
  4. 输入详细描述 - 可选,提供更多上下文
  5. 是否有破坏性变更 - 如果有,需要详细说明
  6. 关联 Issue - 可选,如 fix #123

手动提交

如果你熟悉规范,也可以手动提交:

git commit -m "feat(common): 添加新的工具函数"
git commit -m "fix(vue3): 修复 mergeClass 类型错误"
git commit -m "docs: 更新 README 文档"

提交信息格式

<type>(<scope>): <subject>

<body>

<footer>

Type 类型:

  • feat - 新功能
  • fix 🐛 - Bug 修复
  • docs 📚 - 文档更新
  • style 💎 - 代码格式(不影响代码逻辑)
  • refactor 📦 - 重构(既不是新功能也不是修复)
  • perf 🚀 - 性能优化
  • test 🚨 - 测试相关
  • build 🛠 - 构建系统或依赖更新
  • ci ⚙️ - CI 配置更新
  • chore ♻️ - 其他杂项(构建流程、依赖管理等)
  • revert 🗑 - 回滚之前的提交

Scope 范围(可选):

  • common - @r-utils/common 包
  • vue3 - @r-utils/vue3 包
  • vue2 - @r-utils/vue2 包
  • uni-app - @r-utils/uni-app 包
  • 或具体的文件/模块名

Subject 主题:

  • 简短描述(建议 50 字符以内)
  • 使用祈使句,如"添加"而不是"添加了"
  • 首字母小写
  • 结尾不加句号

示例:

# 好的提交信息
feat(common): 添加 debounce 防抖函数
fix(uni-app): 修复蓝牙连接超时问题
docs: 更新安装说明
refactor(vue3): 优化 mergeClass 实现逻辑

# 不好的提交信息
update code
fix bug
修改了一些文件

5. 推送并创建 Pull Request

# 推送到你的 fork 仓库
git push origin feat/your-feature-name

然后在 Gitee 上创建 Pull Request,请参考 PR 模板填写相关信息。

Git Hooks

项目配置了以下 Git Hooks(通过 husky):

  • pre-commit - 运行 lint-staged 检查代码格式和 lint
  • commit-msg - 使用 commitlint 校验提交信息格式

如果提交被拒绝,请检查:

  1. 代码是否通过 ESLint 检查
  2. 提交信息是否符合规范
  3. 测试是否全部通过

代码规范

JavaScript/TypeScript

  • 使用 ESLint + Prettier 进行代码检查和格式化
  • 遵循项目的 eslint.config.jsESLint Flat Config
  • 提交前运行 pnpm lintpnpm format

测试

  • 为新功能编写单元测试
  • 确保所有测试通过: pnpm test
  • 测试文件放在各包的 test/ 目录下
  • 使用 Vitest 作为测试框架

文档

  • 为新功能添加 JSDoc 注释
  • 更新相关的 README 文档
  • 如果是重大变更,更新 CHANGELOG

Monorepo 结构

r-util-js/
├── packages/
│   ├── common/      # 通用工具库
│   ├── vue3/        # Vue3 工具
│   ├── vue2/        # Vue2 工具
│   └── uni-app/     # uni-app 工具
└── docs/            # 文档

发布流程

发布由维护者负责,详细流程请查看 发布流程文档

常用命令:

pnpm changeset
pnpm release:check
pnpm release
pnpm release:publish

需要帮助?

行为准则

  • 尊重所有贡献者
  • 提供建设性的反馈
  • 专注于对项目最有利的事情
  • 保持友好和专业的态度

感谢你的贡献! 🎉