Skip to content

Interface: TransformOptions

Extends

  • Omit<OxcTransformOptions, "sourceType" | "lang" | "cwd" | "sourcemap" | "define" | "inject" | "jsx">

Properties

assumptions?

  • Type: optional assumptions: CompilerAssumptions
Defined in: binding.d.cts:1201

Set assumptions in order to produce smaller output.

Inherited from

Omit.assumptions


decorator?

  • Type: optional decorator: DecoratorOptions
Defined in: binding.d.cts:1228

Decorator plugin

Inherited from

Omit.decorator


define?

  • Type: optional define: Record<string, string>

Replace global variables or property accessors with the provided values.

Example

Replace the global variable IS_PROD with true

js
export default defineConfig({
  transform: { define: { IS_PROD: 'true' } }
})

Result:

js
// Input
if (IS_PROD) {
  console.log('Production mode')
}

// After bundling
if (true) {
  console.log('Production mode')
}

Replace the property accessor process.env.NODE_ENV with 'production'

js
export default defineConfig({
  transform: { define: { 'process.env.NODE_ENV': "'production'" } }
})

Result:

js
// Input
if (process.env.NODE_ENV === 'production') {
 console.log('Production mode')
}

// After bundling
if ('production' === 'production') {
console.log('Production mode')
}

dropLabels?

  • Type: optional dropLabels: string[]

Remove labeled statements with these label names.

Labeled statements are JavaScript statements prefixed with a label identifier. This option allows you to strip specific labeled statements from the output, which is useful for removing debug-only code in production builds.

Example

js
export default defineConfig({
  transform: { dropLabels: ['DEBUG', 'DEV'] }
})

Result:

js
// Input
DEBUG: console.log('Debug info');
DEV: {
  console.log('Development mode');
}
console.log('Production code');

// After bundling
console.log('Production code');

helpers?

  • Type: optional helpers: Helpers
Defined in: binding.d.cts:1222

Behaviour for runtime helpers.

Inherited from

Omit.helpers


inject?

  • Type: optional inject: Record<string, string | [string, string]>

Inject import statements on demand.

The API is aligned with @rollup/plugin-inject.

Supported patterns

js
{
  // import { Promise } from 'es6-promise'
  Promise: ['es6-promise', 'Promise'],

  // import { Promise as P } from 'es6-promise'
  P: ['es6-promise', 'Promise'],

  // import $ from 'jquery'
  $: 'jquery',

  // import * as fs from 'node:fs'
  fs: ['node:fs', '*'],

  // Inject shims for property access pattern
  'Object.assign': path.resolve( 'src/helpers/object-assign.js' ),
}

jsx?

  • Type: optional jsx: false | "react" | "react-jsx" | "preserve" | JsxOptions

Controls how JSX syntax is transformed.

  • If set to false, an error will be thrown if JSX syntax is encountered.
  • If set to 'react', JSX syntax will be transformed to classic runtime React code.
  • If set to 'react-jsx', JSX syntax will be transformed to automatic runtime React code.
  • If set to 'preserve', JSX syntax will be preserved as-is.

plugins?

  • Type: optional plugins: PluginsOptions
Defined in: binding.d.cts:1230

Third-party plugins to use.

Inherited from

Omit.plugins


target?

  • Type: optional target: string | string[]
Defined in: binding.d.cts:1220

Sets the target environment for the generated JavaScript.

The lowest target is es2015.

Example:

  • 'es2015'
  • ['es2020', 'chrome58', 'edge16', 'firefox57', 'node12', 'safari11']

Default

esnext (No transformation)

See

esbuild#target

Inherited from

Omit.target


typescript?

  • Type: optional typescript: TypeScriptOptions
Defined in: binding.d.cts:1203

Configure how TypeScript is transformed.

Inherited from

Omit.typescript

Released under the MIT License.