Перейти к содержимому

Миграция с tsup

tsup - это мощный и широко используемый бандлер, который во многом похож на tsdown. В то время как tsup построен на базе esbuild, tsdown использует возможности Rolldown, обеспечивая более быструю и мощную сборку.

Руководство по миграции

Если вы сейчас используете tsup и хотите перейти на tsdown, процесс миграции очень прост благодаря специальной команде migrate:

bash
npx tsdown-migrate

Для монорепозиториев можно указывать директории с помощью glob‑шаблонов:

bash
npx tsdown-migrate packages/*

Или перечислить несколько директорий явно:

bash
npx tsdown-migrate packages/foo packages/bar

WARNING

Пожалуйста, сохраните все ваши изменения перед миграцией. В процессе миграции могут быть изменены ваши конфигурационные файлы, поэтому важно заранее зафиксировать или создать резервную копию всех изменений.

TIP

После миграции инструмент автоматически установит все зависимости. Команду нужно запускать из корневой директории вашего проекта.

Параметры миграции

Команда migrate поддерживает следующие параметры для настройки процесса миграции:

  • [...dirs]: Указывает, какие директории нужно мигрировать. Поддерживает glob‑шаблоны (например, packages/*). Если параметр не задан, по умолчанию используется текущая директория.
  • --dry-run (или -d): Выполняет пробный запуск миграции без внесения изменений.

С помощью этих опций вы легко сможете адаптировать процесс миграции под нужды вашего проекта.

Отличия от tsup

Хотя tsdown стремится быть максимально совместимым с tsup, есть некоторые различия, о которых стоит знать:

Значения по умолчанию

  • format: По умолчанию используется esm.
  • clean: Включено по умолчанию, и директория вывода (outDir) будет очищаться перед каждой сборкой.
  • dts: Автоматически включается, если в вашем package.json есть поле typings или types.
  • target: По умолчанию считывается из поля engines.node в вашем файле package.json, если оно доступно.

Различия в функциональности

Некоторые функции, доступные в tsup, пока ещё не реализованы в tsdown. Если вы обнаружите, что какой-то опции не хватает, пожалуйста, создайте issue, чтобы сообщить нам о ваших требованиях.

Новые возможности в tsdown

tsdown также предоставляет новые возможности, которых нет в tsup:

  • nodeProtocol: Управление обработкой импортов встроенных модулей Node.js:
    • true: Добавляет префикс node: к встроенным модулям (например, fsnode:fs)
    • 'strip': Удаляет префикс node: из импортов (например, node:fsfs)
    • false: Оставляет импорты без изменений (по умолчанию)

Пожалуйста, проверьте вашу конфигурацию после миграции, чтобы убедиться, что она соответствует вашим ожиданиям.

Благодарности

tsdown не был бы возможен без вдохновения и вклада open-source сообщества. Мы выражаем искреннюю благодарность следующим проектам и людям:

  • tsup: tsdown во многом вдохновлён tsup и даже использует части его кода. Простота и эффективность tsup были ориентиром при разработке tsdown.
  • @egoist: Автор tsup, чья работа существенно повлияла на экосистему инструментов для JavaScript и TypeScript. Спасибо за вашу преданность делу и вклад в сообщество.

Распространяется под лицензией MIT.