Repolode
dif-sh

dif-sh/dif

리포지토리의 Markdown 파일로 기능 플래그와 A/B 테스트를 관리하고, CLI로 타입이 지정된 TypeScript 클라이언트를 생성합니다.

대체할 수 있는 제품:LaunchDarklyOptimizely

스타
129
포크
0
열린 이슈
1
마지막 커밋
4일 전

어떤 프로젝트인가요?

dif는 모든 기능 플래그와 실험을 YAML frontmatter가 포함된 단일 Markdown 파일로 관리하며, 영향을 받는 코드 옆에서 git으로 추적합니다. `dif` CLI는 이 파일들의 가중치, surface 참조, 대상 사용자 속성, 실험 간 충돌을 검증하고, 활성 항목을 타입이 지정된 TypeScript 클라이언트와 context.json 파일로 컴파일합니다. 런타임 SDK에는 의존성이 없으며 결정론적 버킷팅을 사용하므로, 할당 데이터베이스나 네트워크 호출 없이도 특정 사용자는 페이지를 새로고침하거나 기기를 바꿔도 같은 변형을 받습니다.

이 프로젝트는 Next.js, React, SvelteKit을 대상으로 하며 각각 별도의 npm 패키지를 제공합니다. 기능 플래그와 실험은 같은 파일 형식을 사용합니다. 플래그는 100%를 향해 점진적으로 확대되는 실험입니다. CLI에는 프로젝트 스캐폴딩, 실험 초안 작성, `dif qa`를 통한 사용자 할당 내역 추적, 같은 surface의 후속 실험에 반영할 결론 기록 명령이 포함됩니다.

애널리틱스는 선택 사항입니다. 공개 가능한 키가 없으면 플래그는 로컬에서 평가되며 어떤 데이터도 외부로 전송되지 않습니다. dif.sh Cloud에 연결하면 이벤트 수집과 통계 분석을 사용할 수 있고, 사용자 지정 이벤트 핸들러로 데이터를 원하는 파이프라인에 전달할 수도 있습니다. 저장소에는 실험을 작성하고 결론을 내리는 데 사용할 Claude Code 스킬과 에이전트 지침 파일도 포함되어 있습니다.

핵심 기능

  • 01플래그와 실험을 frontmatter가 포함된 Markdown 파일로 관리하고 pull request에서 검토합니다.
  • 02`dif validate`가 가중치, surface 참조, 대상 사용자, 실험 간 충돌을 검사합니다.
  • 03`dif build`가 타입이 지정된 TypeScript 클라이언트와 context.json을 생성합니다.
  • 04결정론적 버킷팅을 Rust CLI와 TypeScript SDK에서 동일한 로직으로 실행합니다.
  • 05`dif qa`에서 특정 사용자가 어떤 변형을 받는지와 그 이유를 확인할 수 있습니다.
  • 06dif.sh Cloud에 선택적으로 연결해 이벤트를 수집하고 분석할 수 있습니다.

활용 사례

  • 호스팅형 플래그 대시보드 없이 Next.js 또는 SvelteKit 사이트에서 A/B 테스트를 실행합니다.
  • 코드와 함께 git에서 플래그 이력과 실험 결론을 관리합니다.
  • AI 코딩 에이전트가 저장소의 파일을 수정해 플래그를 만들고 종료하도록 합니다.

빠른 시작

  1. 1

    npm으로 dif CLI를 설치합니다(Node 20 이상 필요).

    npm install -g @dif.sh/cli
  2. 2

    저장소에 dif/ 디렉터리, 설정 파일, 에이전트 파일을 생성합니다.

    dif init
  3. 3

    새 experiment 파일을 작성한 다음 열어 status: active로 설정하고 dif build를 실행합니다.

    dif new home-hero-cta --surface home
  4. 4

    active 상태의 experiment를 타입이 지정된 TypeScript 클라이언트로 컴파일합니다.

    dif build

사용 전 알아둘 점

  • npm 설치 경로에는 Node 20 이상이 필요합니다. 독립 실행형 바이너리도 제공됩니다.
  • 생성된 클라이언트는 gitignore 처리되므로, 앱 빌드 전에 CI와 배포 환경에서 dif build를 실행해야 합니다.
  • npm SDK 패키지는 ESM 전용이며 require() 진입점이 없습니다.
  • Cloud analytics는 선택 사항이며 dif.sh Cloud publishable key가 필요합니다.

토픽

자주 묻는 질문

dif은(는) 무엇인가요?
리포지토리의 Markdown 파일로 기능 플래그와 A/B 테스트를 관리하고, CLI로 타입이 지정된 TypeScript 클라이언트를 생성합니다. dif는 모든 기능 플래그와 실험을 YAML frontmatter가 포함된 단일 Markdown 파일로 관리하며, 영향을 받는 코드 옆에서 git으로 추적합니다. `dif` CLI는 이 파일들의 가중치, surface 참조, 대상 사용자 속성, 실험 간 충돌을 검증하고, 활성 항목을 타입이 지정된 TypeScript 클라이언트와 context.json 파일로 컴파일합니다. 런타임 SDK에는 의존성이 없으며 결정론적 버킷팅을 사용하므로, 할당 데이터베이스나 네트워크 호출 없이도 특정 사용자는 페이지를 새로고침하거나 기기를 바꿔도 같은 변형을 받습니다.
dif은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
dif은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
dif은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. dif의 마지막 커밋은 2026년 10월 16일입니다.
dif은(는) 어디에 사용할 수 있나요?
호스팅형 플래그 대시보드 없이 Next.js 또는 SvelteKit 사이트에서 A/B 테스트를 실행합니다. 코드와 함께 git에서 플래그 이력과 실험 결론을 관리합니다. AI 코딩 에이전트가 저장소의 파일을 수정해 플래그를 만들고 종료하도록 합니다.
dif는 어떻게 설치하나요?
npm으로 dif CLI를 설치합니다(Node 20 이상 필요).: npm install -g @dif.sh/cli 저장소에 dif/ 디렉터리, 설정 파일, 에이전트 파일을 생성합니다.: dif init 새 experiment 파일을 작성한 다음 열어 status: active로 설정하고 dif build를 실행합니다.: dif new home-hero-cta --surface home active 상태의 experiment를 타입이 지정된 TypeScript 클라이언트로 컴파일합니다.: dif build
dif은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/dif-sh/dif

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트