Функция transform в esbuild предназначена для
преобразования отдельных фрагментов кода без сборки проекта. Она
используется для компиляции TypeScript, JSX, удаления типов, минификации
и транспиляции синтаксиса под заданные версии JavaScript.
Ниже приведён полный перечень поддерживаемых опций
transform, сгруппированный по назначению.
Определяет, как интерпретировать входной код.
Допустимые значения:
js — JavaScriptjsx — JavaScript с JSXts — TypeScripttsx — TypeScript с JSXjson — JSONcss — CSStext — текстbase64 — base64-кодированиеdataurl — data URLbinary — бинарные данныеКлючевой момент: loader влияет на парсинг исходного кода
и определяет, какие синтаксические конструкции допустимы.
Определяет целевую версию JavaScript, под которую производится транспиляция.
Примеры значений:
es2015es2016es2017es2018es2019es2020es2021es2022esnextИспользуется для преобразования современного синтаксиса (optional chaining, nullish coalescing и др.) в совместимый код.
Формат выходного кода.
Возможные значения:
esm — ES Modulescjs — CommonJSiife — Immediately Invoked Function ExpressionИспользуется при подготовке кода для различных окружений: браузер, Node.js, CDN.
Определяет стратегию обработки JSX.
Варианты:
transform — классическая трансформация JSX в JSpreserve — JSX остаётся без измененийautomatic — новый JSX runtime (React 17+)Функция, используемая для создания JSX-элементов в классическом режиме.
По умолчанию:
React.createElement
Можно заменить на:
h
или любую пользовательскую функцию.
Функция для обработки фрагментов JSX
(<>...</>).
По умолчанию:
React.Fragment
Определяет источник для автоматического JSX runtime.
Пример:
"react"
или
"preact"
Включает dev-режим JSX (дополнительные проверки и более подробные сообщения об ошибках).
Тип: boolean
Включает полную минификацию кода.
Эквивалентно включению:
minifyWhitespaceminifyIdentifiersminifySyntaxТип: boolean
Удаляет лишние пробелы, переносы строк и форматирование.
Сокращает имена переменных, функций и параметров.
Оптимизирует синтаксис:
Генерация source maps.
Возможные значения:
true — встроенная картаfalse — отключено"inline" — встроенная карта в код"external" — отдельный файл source mapИспользуется для отладки транспилированного кода.
Имя исходного файла.
Используется в source maps для корректного отображения пути.
Позволяет заменять глобальные идентификаторы на константы во время трансформации.
Пример:
define: {
"process.env.NODE_ENV": "\"production\""
}
Применяется для:
Удаляет определённые конструкции из кода.
Допустимые значения:
"console" — удаляет все вызовы
console.*"debugger" — удаляет инструкции
debuggerМожно комбинировать:
drop: ["console", "debugger"]
Управляет обработкой лицензионных комментариев.
Возможные значения:
none — удалить все комментарииinline — оставить inlineeof — перенести в конец файлаlinked — вынести в отдельный файлОпределяет кодировку выходного файла.
Возможные значения:
utf8asciiascii используется для максимальной совместимости и
уменьшения размера.
Позволяет передать конфигурацию TypeScript напрямую, без файла
tsconfig.json.
Форматы:
Используется для:
Сохраняет оригинальные имена функций и классов.
Полезно для:
Указывает функции, которые можно безопасно удалить при отсутствии побочных эффектов.
Пример:
pure: ["console.log", "debug"]
transform(code, {
loader,
target,
format,
jsx,
jsxFactory,
jsxFragment,
jsxImportSource,
jsxDev,
minify,
minifyWhitespace,
minifyIdentifiers,
minifySyntax,
sourcemap,
sourcefile,
define,
drop,
legalComments,
charset,
tsconfigRaw,
keepNames,
pure
})
Некоторые опции взаимодействуют между собой:
minify: true переопределяет все частичные
minify-флагиjsx: "automatic" требует корректного
jsxImportSourcedefine применяется до минификацииdrop выполняется до оптимизаций синтаксисаsourcemap влияет только на структуру отладки, не
изменяя ASTtransform работает без файловой системы