Цель (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
содержит:
{
"engines": {
"node": ">=18.0.0"
}
}
Тогда tsdown
автоматически установит параметр target как node18.0.0
.
Если вы хотите переопределить это поведение, вы можете явно указать значение target с помощью CLI или конфигурационного файла.
Настройка Target
Вы можете указать целевую платформу с помощью опции --target
:
tsdown --target <цель>
Поддерживаемые значения
- Версии ECMAScript:
es5
,es2015
,es2020
,esnext
и др. - Браузеры:
chrome100
,safari18
,firefox110
и др. - Node.js:
node20.18
,node16
и др.
Пример
tsdown --target es2020
Можно также передать массив целей, чтобы обеспечить совместимость сразу с несколькими средами.
tsdown --target chrome100 --target node20.18
Вспомогательные модули (runtime helpers)
Когда tsdown
преобразует новые возможности JavaScript для поддержки старых сред, он может использовать хелперы из пакета @oxc-project/runtime
. Например, для работы с await
нужен хелпер @oxc-project/runtime/helpers/asyncToGenerator
.
Если ваш target включает такие возможности, возможно, потребуется установить пакет @oxc-project/runtime
в проект:
npm install @oxc-project/runtime
Если вы хотите встраивать вспомогательные функции вместо их импорта из пакета runtime, вы можете установить @oxc-project/runtime
как зависимость для разработки:
npm install -D @oxc-project/runtime
Адаптация CSS
tsdown
также может адаптировать возможности CSS под указанные версии браузеров. Например, вложенный селектор CSS с &
будет преобразован в плоскую структуру, если целевой браузер chrome108
или старше.
Чтобы включить адаптацию CSS, вам нужно вручную установить unplugin-lightningcss
:
npm install -D unplugin-lightningcss
После установки просто укажите целевой браузер (например, target: 'chrome100'
) в вашей конфигурации или параметрах CLI, и адаптация CSS будет включена автоматически.
Для получения дополнительной информации о поддержке браузеров и совместимости CSS обратитесь к документации Lightning CSS.