BetterAuth에 기여하기

Better Auth에 기여하고자 하는 관심에 감사드립니다! 이 가이드는 Better Auth에 기여하는 간결한 안내서입니다.

시작하기

본격적으로 시작하기 전에, 다음의 중요한 리소스들을 확인해주세요:

개발 환경 설정

개발을 시작하려면:

Node.JS가 설치되어 있는지 확인하세요. 가급적 LTS 버전을 사용하는 것이 좋습니다.

1. 저장소 포크하기

https://github.com/better-auth/better-auth를 방문하세요

오른쪽 상단의 "Fork" 버튼을 클릭하세요.

2. 포크한 저장소 클론하기

# YOUR-USERNAME을 당신의 GitHub 사용자명으로 변경하세요
git clone https://github.com/YOUR-USERNAME/better-auth.git
cd better-auth

3. 의존성 설치하기

pnpm이 설치되어 있는지 확인하세요!

pnpm install

4. ENV 파일 준비하기

예제 env 파일을 복사하여 새로운 .env 파일을 생성하세요.

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

변경사항 만들기

기여하고 싶은 아이디어가 있다면, 변경사항을 만들기 시작할 수 있습니다. 시작하기 위한 단계는 다음과 같습니다:

1. 새 브랜치 생성하기

# main 브랜치에 있는지 확인하세요
git checkout main

# 최신 변경사항 가져오기
git pull upstream main

# 새 브랜치 생성하고 전환하기
git checkout -b feature/your-feature-name

2. 개발 서버 시작하기

개발 서버를 시작하세요:

pnpm dev

문서 서버를 시작하려면:

pnpm -F docs dev

3. 변경사항 만들기

  • 코드베이스에 변경사항을 적용하세요.

  • 필요한 경우 테스트를 작성하세요. (테스트에 대한 자세한 내용은 여기를 참조하세요)

  • 문서를 업데이트하세요. (문서 작성에 대한 자세한 내용은 여기를 참조하세요)

이슈 및 버그 수정

  • good first issue 라벨이 붙은 작업을 GitHub 이슈에서 확인하세요
  • 버그를 보고할 때는 재현 단계와 예상 동작을 포함시키세요
  • 작업하고 싶은 이슈에 댓글을 남겨 중복 작업을 피하세요

프레임워크 통합

더 많은 프레임워크를 지원하는 기여를 환영합니다:

  • 가능한 한 프레임워크에 구애받지 않는 솔루션에 집중하세요
  • 통합을 최소화하고 유지보수 가능하게 유지하세요
  • 현재 모든 통합은 메인 패키지에 있습니다

플러그인 개발

  • 핵심 플러그인의 경우: 먼저 이슈를 열어 아이디어를 논의하세요
  • 커뮤니티 플러그인의 경우: 자유롭게 독립적으로 개발하세요
  • 플러그인 아키텍처 가이드라인을 따르세요

문서

  • 오타와 오류를 수정하세요
  • 예제를 추가하고 기존 내용을 명확하게 하세요
  • 문서가 코드 변경사항과 최신 상태를 유지하도록 하세요

테스트

테스트를 위해 Vitest를 사용합니다. 테스트 파일은 테스트할 소스 파일 옆에 배치하세요:

import { describe, it, expect } from "vitest";
import { getTestInstance } from "./test-utils/test-instance";

describe("Feature", () => {
    it("should work as expected", async () => {
        const { client } = await getTestInstance();
        // 여기에 테스트 코드를 작성하세요
        expect(result).toBeDefined();
    });
});

테스트 인스턴스 헬퍼 사용하기

테스트 인스턴스 헬퍼는 이제 사용자 세션 관리를 위한 개선된 비동기 컨텍스트 지원을 포함합니다:

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

// 특정 사용자 컨텍스트로 테스트 실행
await runWithUser("user@example.com", "password", async (headers) => {
    // 이 블록 내의 모든 client 호출은 사용자의 세션을 사용합니다
    const response = await client.getSession();
    // headers가 자동으로 적용됩니다
});

// 또는 비동기 컨텍스트로 테스트 사용자 사용
const { runWithDefaultUser } = await signInWithTestUser();
await runWithDefaultUser(async (headers) => {
    // 여기의 코드는 테스트 사용자의 세션 컨텍스트로 실행됩니다
});

테스트 모범 사례

  • 명확한 커밋 메시지를 작성하세요
  • 변경사항을 반영하도록 문서를 업데이트하세요
  • 새로운 기능에 대한 테스트를 추가하세요
  • 코딩 표준을 따르세요
  • 풀 리퀘스트를 단일 변경사항에 집중하도록 유지하세요

도움이 필요하신가요?

도움을 요청하는 것을 주저하지 마세요! 다음과 같이 할 수 있습니다:

  • 질문이 있는 이슈를 여세요
  • 커뮤니티 토론에 참여하세요
  • 프로젝트 메인테이너에게 연락하세요

Better Auth에 기여해주셔서 감사합니다!