Skip to content

贡献指南 ​

感谢你对 BrutxUI 的关注!以下是参与开发与提交贡献的指引。


开发环境 ​

前置要求 ​

  • Node.js ^22.13.0 || ^24.0.0 || >=26.0.0
  • pnpm 11+(仓库包管理器限定为 pnpm,严禁使用 npm 或 yarn)
  • Git

克隆与安装 ​

bash
git clone https://github.com/lidaixingchen/brutxui-vue3.git
cd brutxui-vue3
pnpm install

场景匹配的最小化自检 ​

开发阶段严禁无脑运行全量 pnpm test 或 lint。请依据触碰领域运行针对性检查:

变动领域推荐自检命令说明
业务逻辑 / 组件 / 函数pnpm --filter <pkg> test <相对路径>
pnpm exec eslint <file> --fix
运行局部单元测试与代码风格修复
类型接口 / 跨包导出pnpm --filter <pkg> typecheck验证 TS 严格类型与接口兼容
样式 / 令牌 / 导出 / 依赖pnpm check:contracts静态契约并发 6 合 1 门禁(~2s,全绿放行)
文档 / 规范 / 技能 / 链接pnpm check:docs文档健康度并发门禁(~0.4s,加 --fix 自动纠偏链接)

脚手架(生成组件与页面) ​

在根目录下运行脚手架指令,严禁手动从零拼装基础骨架文件:

bash
pnpm generate:component    # 交互式生成新组件骨架(包含组件、variants 变体与测试文件)
pnpm generate:composable   # 生成 Composition API 组合式函数骨架
pnpm generate:page         # 生成文档演示页面

代码红线与架构约定 ​

提交代码前请确保严格遵守以下约定:

  1. 变体隔离:组件的变体逻辑必须提取到同目录下的 *-variants.ts,组件通过 import 引入,严禁在 .vue 内联定义。
  2. 类名合并:必须使用 computed() 包裹 cn(...) 计算类名,严禁在 <template> 内联直接调用 cn()。
  3. 原语复用:以 reka-ui 无头原语为基础,优先复用库内已有组件(如 Button 代替 <button>,Input 代替 <input>),严禁用原生 HTML 元素替代。
  4. 状态只读:Composable 内部状态可变,但向外导出的返回值边界必须用 readonly() 或 DeepReadonly() 保护。
  5. 设计令牌单一信源:主题设计令牌只能在 packages/shared/src/design-tokens.ts 中修改,禁止手动编辑 styles.css 中的 @theme 生成块,亦严禁创建 tailwind.config.js。修改后运行 pnpm generate:tokens 即可同步。

提交规范(Conventional Commits) ​

提交信息格式 ​

text
<type>(<scope>): <简短描述>

<详细描述(可选)>

类型(type):

类型说明示例场景
feat新功能新增组件、新增核心属性
fix缺陷修复修复交互 bug、修复样式计算错误
refactor重构内部结构调整,不改变外部功能
docs文档变更文档补充、示例更新、修正拼写
style格式调整代码格式化、缩进调整(由 ESLint 保证)
test测试补充新增或补全单元测试、a11y 测试
chore构建/工具升级依赖、门禁脚本调整
perf性能优化减少无谓渲染、优化响应式计算
ciCI/CDGitHub Actions 工作流调整

范围(scope):ui | cli | docs | registry | shared | deps


Pull Request 自检流程 ​

提交 PR 前,请在本地运行对应领域的质量门禁,确保检查全绿:

  • 业务代码修改:运行对应包局部测试 pnpm --filter <pkg> test <path>,且无 Lint 违规;
  • 类型或契约调整:运行 pnpm --filter <pkg> typecheck 与 pnpm check:contracts;
  • 文档与示例变动:运行 pnpm check:docs;
  • 提交信息格式:符合 Conventional Commits 规范。

了解系统架构 ​

在参与核心架构改造或新增关键能力前,推荐深入阅读仓库内的常青架构文档:


报告问题 ​

若发现 Bug 或有新特性建议,欢迎在 GitHub Issues 提交反馈,请附带清晰的复现步骤或最小可重现环境(StackBlitz / CodeSandbox)。

蛮力铸就。