Vercel представляет vercel.ts: TypeScript-конфигурация проекта с типовой безопасностью
Vercel, одна из ведущих платформ для развертывания фронтенд-проектов, представила vercel.ts — новый способ программной конфигурации проектов. Этот TypeScript-файл позволяет разработчикам задавать настройки с полной типовой безопасностью, использовать динамическую логику и переменные окружения, выход

Vercel, одна из ведущих платформ для развертывания фронтенд-проектов, представила vercel.ts — новый способ программной конфигурации проектов. Этот TypeScript-файл позволяет разработчикам задавать настройки с полной типовой безопасностью, использовать динамическую логику и переменные окружения, выходя за рамки статического JSON. Поддержка vercel.ts уже доступна для всех проектов, а миграция с vercel.json описана в документации. Нововведение знаменует собой переход к более гибкому и надежному управлению конфигурацией, что особенно важно для сложных современных приложений.
Что такое vercel.ts и как он работает
vercel.ts — это конфигурационный файл на TypeScript, который заменяет традиционный vercel.json. Он позволяет описывать конфигурацию как код: определять сложные правила роутинга, трансформации запросов, кеширования и cron-задачи. В отличие от JSON, vercel.ts поддерживает условную логику, импорт общих модулей и доступ к переменным окружения через process.env. Для работы с новым форматом Vercel выпустила пакет @vercel/config, который предоставляет типы и утилиты. Разработчики могут использовать файлы с расширениями .ts, .js, .mjs, .cjs или .mts. Это означает, что конфигурация становится частью кодовой базы, подчиняясь тем же правилам ревью, тестирования и версионирования.
Как использовать vercel.ts для настройки проекта Vercel?
Чтобы начать, достаточно установить пакет @vercel/config и создать файл vercel.ts в корне проекта. Пакет предоставляет функцию defineConfig, которая принимает объект конфигурации с полной типизацией. Например, можно динамически генерировать редиректы на основе данных из API: импортировать модуль с правилами и использовать его в конфигурации. Это особенно полезно для проектов с частыми изменениями роутинга, где ручное обновление JSON было бы трудоемким. Кроме того, vercel.ts поддерживает асинхронные функции, что позволяет загружать конфигурацию из внешних источников.
Предыстория и контекст
Ранее Vercel использовал vercel.json — статический JSON-файл, который был удобен для простых проектов, но ограничивал возможности при сложной конфигурации. Разработчикам приходилось прибегать к обходным путям, например, использовать middleware или плагины для динамического поведения. Введение vercel.ts — логичный шаг в эволюции платформы, следуя тренду на «конфигурацию как код» (configuration as code), который уже применяется в таких инструментах, как Next.js (next.config.js) и Vite. TypeScript обеспечивает автодополнение и проверку типов на этапе написания, снижая вероятность ошибок. Это особенно ценно для больших команд, где конфигурация часто становится источником багов из-за опечаток или несоответствия типов.
Чем vercel.ts отличается от vercel.json?
Главное отличие — vercel.ts позволяет писать код вместо статического JSON. Например, можно динамически генерировать правила редиректов на основе данных из API или условно применять заголовки кеширования в зависимости от окружения. В vercel.ts также доступны импорты, что позволяет выносить общую логику в отдельные модули. При этом свойства конфигурации остаются теми же, что и в vercel.json, поэтому миграция не требует полного переписывания — достаточно преобразовать JSON в TypeScript с использованием @vercel/config. Для простых проектов разница может быть незаметна, но для сложных сценариев vercel.ts дает значительную гибкость.
Технические детали и пакет @vercel/config
Пакет @vercel/config предоставляет типы для всех опций конфигурации Vercel, включая функции, роутинг, заголовки, редиректы, rewrite, cron-задачи и многое другое. Разработчики могут импортировать defineConfig из пакета и получить автодополнение в IDE. Пример базовой конфигурации:
import { defineConfig } from '@vercel/config'; export default defineConfig({ rewrites: () = [ { source: '/api/:path', destination: '/api/handler' }, ], headers: process.env.NODEENV === 'production' ? [{ source: '/(.)', headers: [{ key: 'X-Frame-Options', value: 'DENY' }] }] : [], });
Этот код демонстрирует динамическое создание заголовков в зависимости от окружения — то, что невозможно в JSON. Кроме того, пакет поддерживает строгую типизацию, что предотвращает ошибки на этапе компиляции. Vercel также предоставляет утилиты для объединения нескольких конфигураций и валидации схемы.
Кого затронет и как
vercel.ts будет полезен в первую очередь разработчикам, использующим Vercel для сложных проектов: многомодульные приложения, сайты с динамическим роутингом, проекты с cron-задачами. Для простых проектов, где достаточно статической конфигурации, vercel.json остаётся рабочим вариантом. Однако Vercel рекомендует постепенно мигрировать на vercel.ts, чтобы воспользоваться преимуществами типовой безопасности. В России и СНГ это нововведение будет актуально для команд, которые активно используют Vercel для фронтенд-проектов на Next.js. Особенно это касается проектов с частыми изменениями в конфигурации, где vercel.ts позволит автоматизировать процессы и снизить риск ошибок.
Что будет дальше
Vercel планирует расширять возможности vercel.ts, добавляя поддержку ещё более сложных сценариев. В ближайшее время стоит ожидать улучшений в интеграции с другими сервисами Vercel, такими как Edge Functions и Analytics. Разработчики могут уже сейчас попробовать vercel.ts в песочнице на сайте Vercel и изучить документацию по миграции. В будущем возможно появление визуального редактора конфигурации, который будет генерировать vercel.ts автоматически. Также ожидается более глубокая интеграция с Next.js и другими фреймворками.
Итог
vercel.ts — значительное улучшение для экосистемы Vercel, которое делает конфигурацию проектов более гибкой и безопасной. Переход на TypeScript-конфигурацию поможет разработчикам избежать ошибок, упростит поддержку сложных приложений и откроет новые возможности для автоматизации. Следите за обновлениями Vercel, чтобы не пропустить новые функции. Если вы еще не пробовали vercel.ts, сейчас самое время — начните с малого, преобразовав один из ваших vercel.json в TypeScript, и оцените преимущества типовой безопасности и динамической логики.