Transformer
Высокопроизводительный трансформер: переписывает неподдерживаемый синтаксис в вид, понятный целевым средам.
Возможности
- понижение ESNext до ES2015
- TypeScript → JavaScript
- JSX → JavaScript с встроенным React Refresh
- плагины вроде styled-components
- подстановка глобальных переменных
- генерация isolated declarations без вызова компилятора TypeScript
Общие опции
Функция transform принимает имя файла, исходный код и объект опций:
js
import { transform } from "oxc-transform";
const result = await transform("lib.ts", sourceCode, {
// Явный язык. По умолчанию выводится из расширения файла.
lang: "tsx", // "js" | "jsx" | "ts" | "tsx" | "dts"
// script / module / CommonJS. По умолчанию определяется автоматически.
sourceType: "module", // "script" | "module" | "commonjs" | "unambiguous"
// Текущая рабочая директория для относительных путей.
cwd: "/path/to/project",
// Генерация source map.
sourcemap: true,
// Стратегия для runtime-хелперов.
helpers: {
mode: "Runtime", // "Runtime" (импорт из @oxc-project/runtime) или "External" (глобальный babelHelpers)
},
// См. подстраницы: typescript, jsx, target, assumptions, define, inject, decorator, plugins
});transform асинхронная; есть синхронная transformSync с тем же контрактом.
Установка
Node.js
- привязка oxc-transform;
- демо на stackblitz.
Rust
Crate oxc с фичей transformer.
Пример: crates/oxc_transformer/examples/transformer.rs.