为 BetterAuth 做贡献

BetterAuth 贡献指南

感谢你对为 Better Auth 贡献代码的兴趣!本指南是为 Better Auth 贡献代码的简明指南。

入门

在开始之前,这里有一些重要资源:

开始开发前:

请确保你已安装 Node.JS,建议使用 LTS 版本。

1. Fork 仓库

访问 https://github.com/better-auth/better-auth

点击右上角“Fork”按钮。

2. 克隆你的 Fork

# 将 YOUR-USERNAME 替换为你的 GitHub 用户名
git clone https://github.com/YOUR-USERNAME/better-auth.git
cd better-auth

3. 安装依赖

确保已安装 pnpm!

pnpm install

4. 准备环境文件

复制示例环境文件以创建新的 .env 文件。

cp -n ./docs/.env.example ./docs/.env

进行更改

当你确定想要贡献的内容后,就可以开始更改了。以下是入门步骤:

1. 创建新分支

# 添加上游远程仓库(如果尚未添加)
git remote add upstream https://github.com/better-auth/better-auth.git

# 确保你在 main 分支
git checkout main

# 拉取最新更改
git pull upstream main

# 创建并切换到新分支
git checkout -b feature/your-feature-name

2. 启动开发服务器

启动开发服务器:

pnpm dev

启动文档服务器:

pnpm -F docs dev

3. 进行更改

  • 对代码库进行更改。

  • 编写测试(如有需要)。(了解更多关于 测试)

  • 更新文档。(了解更多关于 文档编写)

问题与错误修复

  • 查看我们的 GitHub 问题,寻找标记为 good first issue 的问题
  • 报告错误时,请包含重现步骤和预期行为
  • 在你希望处理的问题上留言,以避免重复工作

欢迎为更多框架贡献支持:

  • 尽可能关注框架无关的解决方案

  • 保持集成方案简洁且易于维护

  • 所有集成目前都在主包中

  • 重点关注尽可能与框架无关的解决方案

  • 保持集成简洁且易于维护

  • 所有集成目前都位于主包中

社交提供商集成

在提议内置社交提供商或提供商辅助工具之前,请查看社交提供商贡献政策。

社区辅助工具可以使用 Generic OAuth 插件独立开发,并提交以列入其他社交提供商。

插件开发

  • 修正拼写和错误
  • 添加示例,澄清现有内容
  • 确保文档与代码更改同步更新

文档编写

  • 修正拼写和错误
  • 添加示例并澄清现有内容
  • 确保文档随着代码更改而更新

测试

我们使用 Vitest 作为测试工具。请将测试文件放置在对应的源代码文件旁边:

import { describe, it, expect } from "vitest";
import { getTestInstance } from "better-auth/test";

describe("Feature", () => {
    it("should work as expected", async () => {
        const { client } = await getTestInstance();
        // 在这里编写测试代码
        expect(result).toBeDefined();
    });
});

使用测试实例辅助工具

测试实例辅助工具现已支持改进的异步上下文管理以处理用户会话:

const { client, runWithUser, signInWithTestUser } = await getTestInstance();

// 以指定用户上下文运行测试
await runWithUser("[email protected]", "password", async (headers) => {
    // 该代码块内所有客户端调用将使用该用户的会话
    const response = await client.getSession();
    // headers 会自动应用
});

// 或使用测试用户的异步上下文
const { runWithDefaultUser } = await signInWithTestUser();
await runWithDefaultUser(async (headers) => {
    // 此处代码在测试用户会话上下文中运行
});

测试最佳实践

  • 编写清晰的提交信息
  • 更新文档以反映你的更改
  • 为新功能编写测试
  • 遵循我们的编码标准
  • 保持拉取请求专注于单一更改

需要帮助?

请随时寻求帮助!你可以:

感谢你为 Better Auth 贡献代码!