Skip to content

Цель (Target)

Параметр target определяет, какие возможности JavaScript и CSS будут понижены (преобразованы в более старый синтаксис), а какие останутся без изменений в итоговом коде. Это позволяет контролировать совместимость собранного кода с определёнными окружениями или версиями JavaScript.

Например, стрелочная функция () => this будет преобразована в эквивалентное выражение с function, если целевая версия es5 или ниже.

Поддерживается только преобразование современного синтаксиса в более старый (syntax downgrade)

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

Поведение параметра target по умолчанию

По умолчанию tsdown считывает поле engines.node из вашего файла package.json и автоматически устанавливает параметр target на минимальную совместимую версию Node.js, указанную в этом поле. Это обеспечивает совместимость сгенерированного кода с окружениями, которые вы объявили для вашего пакета.

Например, если ваш package.json содержит:

json
{
  "engines": {
    "node": ">=18.0.0"
  }
}

Тогда tsdown автоматически установит параметр target как node18.0.0.

Если вы хотите переопределить это поведение, вы можете явно указать значение target с помощью CLI или конфигурационного файла.

Настройка Target

Вы можете указать целевую платформу с помощью опции --target:

bash
tsdown --target <цель>

Поддерживаемые значения

  • Версии ECMAScript: es5, es2015, es2020, esnext и др.
  • Браузеры: chrome100, safari18, firefox110 и др.
  • Node.js: node20.18, node16 и др.

Пример

bash
tsdown --target es2020

Можно также передать массив целей, чтобы обеспечить совместимость сразу с несколькими средами.

bash
tsdown --target chrome100 --target node20.18

Вспомогательные модули (runtime helpers)

Когда tsdown преобразует новые возможности JavaScript для поддержки старых сред, он может использовать хелперы из пакета @oxc-project/runtime. Например, для работы с await нужен хелпер @oxc-project/runtime/helpers/asyncToGenerator.

Если ваш target включает такие возможности, возможно, потребуется установить пакет @oxc-project/runtime в проект:

bash
npm install @oxc-project/runtime

Если вы хотите встраивать вспомогательные функции вместо их импорта из пакета runtime, вы можете установить @oxc-project/runtime как зависимость для разработки:

bash
npm install -D @oxc-project/runtime

Адаптация CSS

tsdown также может адаптировать возможности CSS под указанные версии браузеров. Например, вложенный селектор CSS с & будет преобразован в плоскую структуру, если целевой браузер chrome108 или старше.

Чтобы включить адаптацию CSS, вам нужно вручную установить unplugin-lightningcss:

bash
npm install -D unplugin-lightningcss

После установки просто укажите целевой браузер (например, target: 'chrome100') в вашей конфигурации или параметрах CLI, и адаптация CSS будет включена автоматически.

Для получения дополнительной информации о поддержке браузеров и совместимости CSS обратитесь к документации Lightning CSS.

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