Skip to content

transform

  • Type: object with the properties below
  • Optional

Configure how the code is transformed. This process happens after the transform hook.

Example

Enable legacy decorators

js
export default defineConfig({
  transform: {
    decorator: {
      legacy: true,
    },
  },
})

Note that if you have correct tsconfig.json file, Rolldown will automatically detect and enable legacy decorators support.

In-depth

Rolldown uses Oxc under the hood for transformation.

While Oxc does not support lowering the latest decorators proposal yet, Rolldown is able to bundle them.

See Oxc Transformer's document for more details.

assumptions?

  • Type: CompilerAssumptions
  • Optional
Defined in: binding.d.cts:1201

Set assumptions in order to produce smaller output.

Inherited from

Omit.assumptions


decorator?

  • Type: DecoratorOptions
  • Optional
Defined in: binding.d.cts:1228

Decorator plugin

Inherited from

Omit.decorator


define?

  • Type: Record<string, string>
  • Optional

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: string[]
  • Optional

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: Helpers
  • Optional
Defined in: binding.d.cts:1222

Behaviour for runtime helpers.

Inherited from

Omit.helpers


inject?

  • Type: Record<string, string | [string, string]>
  • Optional

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: false | "react" | "react-jsx" | "preserve" | JsxOptions
  • Optional

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: PluginsOptions
  • Optional
Defined in: binding.d.cts:1230

Third-party plugins to use.

Inherited from

Omit.plugins


target?

  • Type: string | string[]
  • Optional
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: TypeScriptOptions
  • Optional
Defined in: binding.d.cts:1203

Configure how TypeScript is transformed.

Inherited from

Omit.typescript