@vercel/config
TypeScript SDK for programmatically defining Vercel configuration. Write type-safe routing rules and build configuration in TypeScript instead of JSON.
Installation
npm install @vercel/config
Quick Start
Create a vercel.ts file in your project root:
import { createRouter, VercelConfig } from '@vercel/config/v1';
const router = createRouter();
export const config: VercelConfig = {
buildCommand: 'npm run build',
framework: 'nextjs',
routes: [
router.cacheControl('/static/(.*)', {
public: true,
maxAge: '1 week',
immutable: true
}),
router.rewrite('/users/:userId', 'https://api.example.com/users/$1',
({ userId, env }) => ({
requestHeaders: {
'x-user-id': userId,
'authorization': `Bearer ${env.API_TOKEN}`
}
})
),
router.redirect('/old-docs', '/docs', { permanent: true })
],
crons: [
{ path: '/api/cleanup', schedule: '0 0 * * *' }
]
};
Features
- Type-safe configuration - Full TypeScript support with IDE autocomplete
- Readable syntax - Helper methods like
router.redirect(), router.rewrite(), router.header()
- Static validation - Catch configuration errors at development time
- Transforms - Modify request/response headers and query parameters on the fly
- Conditions - Advanced routing with
has and missing conditions
- CLI tools -
compile and validate commands for development
Build-Time Compilation
Your vercel.ts is automatically compiled to vercel.json during:
vercel build
vercel dev
vercel deploy
No manual build step needed - the Vercel CLI handles compilation automatically.
CLI Commands
For development and validation:
npx @vercel/config compile
npx @vercel/config validate
npx @vercel/config generate
Validation
Static fields are validated to ensure they only contain literal values (strings, booleans, objects with primitives):
export const buildCommand = 'npm run build';
export const buildCommand = process.env.BUILD_CMD;
export const git = {
deploymentEnabled: {
'main': true,
'dev': false
}
};
Static fields that are validated:
buildCommand, devCommand, installCommand
framework, nodeVersion, outputDirectory
github.enabled, github.autoAlias, github.autoJobCancelation
git.deploymentEnabled
relatedProjects
Important Notes
Learn More