Vercel이 정적 JSON 설정 파일을 대체하는 TypeScript 기반 `vercel.ts` 설정 파일을 출시했다. 타입 안전성, 동적 로직, 환경 변수 접근이 가능해져 복잡한 라우팅·캐싱·크론 설정을 코드로 표현할 수 있다. `.json`, `.js`, `.mjs`, `.cjs`, `.mts` 파일 형식을 모두 지원한다.
핵심 포인트- **타입 세이프 설정**: `VercelConfig` 타입으로 IDE 자동완성·오류 감지 지원
- **동적 로직 가능**: 환경 변수 기반 조건부 설정, 공유 로직 재사용 — 정적 JSON으로 불가능했던 것들
- **기존 `vercel.json`과 동일한 속성**: 마이그레이션 부담 최소화
상세 정리
`vercel.ts`는 기존 `vercel.json`을 TypeScript 파일로 교체한다. 속성 정의는 `vercel.json`과 동일하지만, TypeScript를 사용하므로 환경 변수 접근과 조건부 로직이 가능하다.
공식 예시:
```typescript import { type VercelConfig, routes, deploymentEnv } from '@vercel/config/v1';
export const config: VercelConfig = { framework: 'nextjs',
crons: [ { path: '/api/cleanup', schedule: '0 0 * * *' }, { path: '/api/sync-users', schedule: '*/15 * * * *' }, ],
rewrites: [ routes.rewrite('/(.*)', 'https://external-api.com', { requestHeaders: { 'proxy-header': deploymentEnv('PROXY_HEADER') } }), ], }; ```
`deploymentEnv('PROXY_HEADER')`는 배포 환경의 환경 변수를 설정 파일 내에서 직접 참조하는 헬퍼다. 기존 `vercel.json`에서는 환경 변수를 설정 파일에서 직접 참조할 수 없었는데, `vercel.ts`는 이를 해결한다.
설정 가능한 영역: - **고급 라우팅**: 커스텀 요청 처리, URL 리라이트 - **요청 변환**: 헤더 수정, 커스텀 로직 - **캐싱 규칙**: 성능 최적화를 위한 캐시 설정 - **크론 잡**: 주기적 작업 실행 스케줄
왜 읽나Vercel 프로젝트에서 `vercel.json`으로 표현하기 어려웠던 환경별 설정, 조건부 라우팅, 공유 설정 로직이 필요했던 엔지니어에게 직접적으로 유용하다. 기존 `vercel.json` 속성과 동일하므로 마이그레이션도 간단하다.