점진적 코드베이스 마이그레이션
워크플로우고급
대규모 마이그레이션(JavaScript에서 TypeScript, REST에서 GraphQL, 클래스에서 함수형 컴포넌트)은 한꺼번에 시도하면 실패합니다. 이 패턴은 마이그레이션을 안전하고 되돌릴 수 있는 단위로 분할합니다: 마이그레이션 계획을 생성하고, 의존성 순서대로 파일을 처리하며, 각 단계에서 테스트로 검증하고, 마이그레이션 매니페스트로 진행 상황을 추적합니다. Claude Code가 기계적인 변환을 처리하고 사용자는 고차원 판단이 필요한 결정을 리뷰합니다.
마이그레이션리팩토링점진적자동화TypeScript
패턴 코드
# Incremental Migration Pattern
## Step 1: Generate Migration Manifest
```bash
# Create a manifest of all files to migrate
claude -p "Analyze src/ and create a migration manifest for
JS-to-TypeScript conversion. For each file, include:
- file path
- dependency depth (leaf=0, higher=more deps)
- estimated complexity (low/medium/high)
- dependencies (files it imports)
Sort by dependency depth ascending (leaves first).
Output as JSON to migration-manifest.json"
```
## Step 2: CLAUDE.md — Migration Rules
```markdown
# Migration: JavaScript → TypeScript
## Rules
- Process files in dependency order (leaves first)
- Rename .js → .ts (.jsx → .tsx for React files)
- Add explicit types for all function parameters and returns
- Use `unknown` instead of `any` — add TODO for complex cases
- Preserve all existing JSDoc comments
- Do NOT change any runtime behavior
- Run tests after each file conversion
## Type Strategy
- Shared types go to src/types/[module].ts
- Inline types for single-use cases
- Use branded types for IDs: type UserId = string & { __brand: "UserId" }
## Progress Tracking
- Update migration-manifest.json status: pending → done after each file
- Commit after each successfully migrated file
```
## Step 3: Automated Migration Loop
```bash
#!/bin/bash
# migrate-incremental.sh
MANIFEST="migration-manifest.json"
PENDING=$(jq '[.[] | select(.status == "pending")] | length' $MANIFEST)
echo "Migration: $PENDING files remaining"
for FILE in $(jq -r '.[] | select(.status == "pending") | .path' $MANIFEST | head -5); do
echo "--- Migrating: $FILE ---"
claude -p "Migrate $FILE from JavaScript to TypeScript.
Follow the migration rules in CLAUDE.md.
After conversion, run: npx tsc --noEmit && npm test"
# Check if tests pass
if npm test --silent; then
# Update manifest
jq "(.[] | select(.path == \"$FILE\")).status = \"done\"" $MANIFEST > tmp.json
mv tmp.json $MANIFEST
git add -A && git commit -m "migrate: convert $FILE to TypeScript"
echo "PASS: $FILE migrated successfully"
else
echo "FAIL: $FILE — reverting"
git checkout -- .
fi
done
```
## Step 4: Progress Dashboard
```bash
# Check migration progress
jq '{
total: length,
done: [.[] | select(.status == "done")] | length,
pending: [.[] | select(.status == "pending")] | length,
pct: (([.[] | select(.status == "done")] | length) * 100 / length | floor)
}' migration-manifest.json
```
이 패턴을 프로젝트 설정에 복사하여 적용하세요.
실행 미리보기
점진적 코드베이스 마이그레이션
점진적 코드베이스 마이그레이션에 대해
Claude Code 패턴은 복잡한 개발 시나리오를 효과적으로 다루기 위한 검증된 아키텍처 설계와 워크플로우 구조입니다. 점진적 코드베이스 마이그레이션은(는) 고급 수준의 워크플로우 패턴으로, 프로젝트에 맞게 응용할 수 있는 테스트된 반복 가능한 접근 방식을 제공하여 더 효율적이고 일관된 결과를 만들어 냅니다.