Parcel относится к классу сборщиков, где поддержка TypeScript
реализована как часть базового пайплайна трансформаций, без
необходимости ручной настройки компиляторов, загрузчиков и связок между
ними. Исходные .ts и .tsx файлы
рассматриваются как первичные модули наряду с JavaScript, а процесс
компиляции интегрирован в граф зависимостей.
При добавлении TypeScript в проект отсутствует необходимость в
конфигурации Webpack-лоадеров или отдельной сборке через
tsc на этапе разработки. Parcel автоматически определяет
тип файлов и применяет встроенный трансформер, обеспечивающий
преобразование TypeScript в JavaScript перед дальнейшей упаковкой.
Parcel строит граф зависимостей на основе импортов, начиная с точки
входа. При встрече файлов .ts или .tsx система
подключает встроенный трансформер, который выполняет удаление типов и
преобразование синтаксиса в исполняемый JavaScript.
Ключевая особенность заключается в том, что трансформация происходит на уровне отдельного модуля, а не всего проекта целиком. Это позволяет:
TypeScript в данном контексте используется исключительно как надстройка типизации, а не как этап обязательной компиляции всего проекта.
Базовый проект с TypeScript в Parcel может обходиться без явных настроек. Достаточно наличия точек входа и установки зависимостей:
Файл конфигурации tsconfig.json не является обязательным
для работы трансформации. В случае отсутствия конфигурации используются
стандартные эвристики компилятора, достаточные для большинства сценариев
фронтенд-разработки.
При наличии tsconfig.json Parcel учитывает его параметры
частично, в основном в части:
Однако сам процесс транспиляции не блокируется отсутствием конфигурационного файла.
Встроенная обработка TypeScript в Parcel ориентирована на преобразование синтаксиса, а не на строгую проверку типов. Это означает, что:
Такое разделение позволяет ускорить цикл разработки, поскольку сборщик не выполняет полную типовую проверку на каждом изменении файла.
Для статической проверки типов используется стандартный компилятор TypeScript, запускаемый параллельно. Он работает независимо от процесса бандлинга и не влияет на скорость пересборки.
Файлы .tsx обрабатываются аналогично .ts,
но с дополнительной поддержкой JSX-синтаксиса. Parcel распознает JSX в
TypeScript-файлах и применяет соответствующий трансформер.
Поддерживаются различные JSX-режимы, определяемые через
tsconfig.json:
В случае отсутствия явных настроек используется автоматическое определение среды на основе зависимостей проекта.
JSX трансформируется до уровня JavaScript до этапа упаковки, что позволяет единообразно обрабатывать компоненты независимо от исходного синтаксиса.
TypeScript-проекты часто используют алиасы путей для упрощения
импортов. Parcel учитывает конфигурацию paths из
tsconfig.json, интегрируя её в собственную систему
резолвинга модулей.
Это позволяет использовать конструкции вида логических алиасов без необходимости ручной настройки резолвера:
Резолвинг происходит на этапе построения графа зависимостей, до трансформации исходного кода.
Parcel поддерживает HMR (Hot Module Replacement) для
TypeScript-файлов без дополнительных плагинов. Изменения в
.ts и .tsx модулях отслеживаются на уровне
файловой системы, после чего пересобираются только затронутые части
графа.
Особенности поведения HMR:
Это делает цикл разработки непрерывным даже при использовании строгой типизации на уровне проекта.
TypeScript поддерживает ряд экспериментальных синтаксических
возможностей, включая декораторы. Parcel может обрабатывать такие
конструкции при условии их включения в tsconfig.json.
При трансформации:
Подобный подход позволяет использовать современные фичи без ручной настройки цепочки транспилеров.
Parcel ориентируется на современные стандарты JavaScript и автоматически определяет уровень трансформации исходя из окружения. TypeScript в этом процессе выступает как источник синтаксиса и типов, а не как инструмент управления целевой платформой.
При этом:
Каждый TypeScript-файл в Parcel рассматривается как независимая единица трансформации. При изменении файла:
Это снижает стоимость пересборки в больших проектах, где количество TypeScript-модулей может быть значительным.
Кэш хранит как промежуточный JavaScript, так и результаты анализа зависимостей.
В режиме production Parcel выполняет дополнительные оптимизации над результатом трансформации TypeScript-кода:
TypeScript на этом этапе уже полностью исключён из цепочки исполнения, остаётся только JavaScript-код, подготовленный для выполнения в целевой среде.
TypeScript-модули в Parcel могут свободно комбинироваться с JavaScript-библиотеками без дополнительных деклараций сборщика. Типы подключаемых библиотек обрабатываются исключительно TypeScript-компилятором, а Parcel не вмешивается в процесс типизации.
Это разделение ответственности позволяет:
.d.ts файлы без
изменений;Проекты редко состоят исключительно из TypeScript. Parcel поддерживает смешанные кодовые базы, где:
.js файлы могут импортировать .ts
модули;.ts файлы могут использовать JavaScript
зависимости;Трансформация выполняется выборочно, только для TypeScript-части проекта, что снижает общий объём обработки.
Ошибки типизации не прерывают процесс сборки Parcel, поскольку трансформация и проверка типов разделены. Это позволяет:
Такое поведение ориентировано на скорость разработки, а не на строгость компиляции на этапе сборки.