Bun

interface

TranspilerOptions

interface TranspilerOptions

  • allowBunRuntime?: boolean
  • autoImportJSX?: boolean
  • deadCodeElimination?: boolean

    Experimental

    Enabled by default, use this to disable dead code elimination.

    Some other transpiler options may still do some specific dead code elimination.

  • define?: Record<string, string>

    Replace key with value. Value must be a JSON string.

     { "process.env.NODE_ENV": "\"production\"" }
    
  • exports?: { eliminate: string[]; replace: Record<string, string> }
  • inline?: boolean

    This does two things (and possibly more in the future):

    1. const declarations to primitive types (excluding Object/Array) at the top of a scope before any let or var declarations will be inlined into their usages.
    2. let and const declarations only used once are inlined into their usages.

    JavaScript engines typically do these optimizations internally, however it might only happen much later in the compilation pipeline, after code has been executed many many times.

    This will typically shrink the output size of code, but it might increase it in some cases. Do your own benchmarks!

  • loader?: JavaScriptLoader

    What is the default loader used for this transpiler?

  • logLevel?: 'error' | 'verbose' | 'debug' | 'info' | 'warn'
  • macro?: MacroMap

    Replace an import statement with a macro.

    This will remove the import statement from the final output and replace any function calls or template strings with the result returned by the macro

       {
           "react-relay": {
               "graphql": "bun-macro-relay"
           }
       }
    

    Code that calls graphql will be replaced with the result of the macro.

    import {graphql} from "react-relay";
    
    // Input:
    const query = graphql`
        query {
            ... on User {
                id
            }
        }
    }`;
    

    Will be replaced with:

    import UserQuery from "./UserQuery.graphql";
    const query = UserQuery;
    
  • minifyWhitespace?: boolean

    Experimental

    Minify whitespace and comments from the output.

  • replMode?: boolean

    Enable REPL mode transforms:

    • Wraps top-level inputs that appear to be object literals (inputs starting with '{' without trailing ';') in parentheses
    • Hoists all declarations as var for REPL persistence across vm.runInContext calls
    • Wraps last expression in { proto: null, value: expr } for result capture
    • Wraps code in sync/async IIFE to avoid parentheses around object literals
  • target?: Target
    "browser"
    
  • treeShaking?: boolean
  • tsconfig?: string | TSConfig

    TSConfig.json file as stringified JSON or an object Use this to set a custom JSX factory, fragment, or import source For example, if you want to use Preact instead of React. Or if you want to use Emotion.