트랜스포머
대상 런타임이 지원하지 않는 구문을 지원되는 형태로 바꾸는 고성능 트랜스포머입니다.
기능
- ESNext를 ES2015로 내림
- TypeScript를 JavaScript로 변환
- JSX를 JavaScript로 변환, React Refresh 내장
- styled-components 등 인기 플러그인 내장 지원
- 전역 변수 치환
- TypeScript 컴파일 없이 TypeScript isolated declarations 출력
일반 옵션
transform 함수는 파일 이름, 소스 코드, 옵션 객체를 받습니다:
js
import { transform } from "oxc-transform";
const result = await transform("lib.ts", sourceCode, {
// 소스 언어 강제. 기본은 파일 이름에서 추론.
lang: "tsx", // "js" | "jsx" | "ts" | "tsx" | "dts"
// 스크립트, 모듈, CommonJS로 취급. 기본은 추론.
sourceType: "module", // "script" | "module" | "commonjs" | "unambiguous"
// 현재 작업 디렉터리. 상대 경로 해석에 사용.
cwd: "/path/to/project",
// 소스 맵 생성.
sourcemap: true,
// 런타임 헬퍼 전략.
helpers: {
mode: "Runtime", // "Runtime" (@oxc-project/runtime에서 import) 또는 "External" (전역 babelHelpers)
},
// 추가 옵션은 하위 페이지 참고:
// typescript, jsx, target, assumptions, define, inject, decorator, plugins
});transform은 비동기입니다. 같은 시그니처의 동기 transformSync도 있습니다.
설치
Node.js
- 노드 바인딩 oxc-transform 사용
- stackblitz에서 시도
Rust
transformer 기능이 포함된 통합 크레이트 oxc를 사용합니다.
Rust 사용 예는 여기에 있습니다.