Msetup
Bun

method

BunPlugin.setup

): void | Promise<void>;

A function that will be called when the plugin is loaded.

This function may be called in the same tick that it is registered, or it may be called later. It could potentially be called multiple times for different targets.

@param build

A builder object that can be used to register plugin hooks

Referenced types

interface PluginBuilder

The builder object passed to Bun.plugin

  • config: BuildConfig & { plugins: BunPlugin[] }

    The config object passed to Bun.build as is. Can be mutated.

  • specifier: string,
    callback: () => OnLoadResult | Promise<OnLoadResult>
    ): this;

    Create a lazy-loaded virtual module that can be imported or required from other modules

    @param specifier

    The module specifier to register the callback for

    @param callback

    The function to run when the module is imported or required

    @returns

    this for method chaining

    Bun.plugin({
      setup(builder) {
        builder.module("hello:world", () => {
          return { exports: { foo: "bar" }, loader: "object" };
        });
      },
    });
    
    // sometime later
    const { foo } = await import("hello:world");
    console.log(foo); // "bar"
    
    // or
    const { foo } = require("hello:world");
    console.log(foo); // "bar"
    
  • constraints: PluginConstraints,
    callback: { external: unknown; napiModule: unknown; symbol: string }
    ): this;
  • constraints: PluginConstraints,
    callback: OnLoadCallback
    ): this;

    Register a callback to load imports with a specific import specifier

    @param constraints

    The constraints to apply the plugin to

    @param callback

    The callback to handle the import

    @returns

    this for method chaining

    Bun.plugin({
      setup(builder) {
        builder.onLoad({ filter: /^hello:world$/ }, (args) => {
          return { exports: { foo: "bar" }, loader: "object" };
        });
      },
    });
    
  • constraints: PluginConstraints,
    ): this;

    Register a callback to resolve imports matching a filter and/or namespace

    @param constraints

    The constraints to apply the plugin to

    @param callback

    The callback to handle the import

    @returns

    this for method chaining

    Bun.plugin({
      setup(builder) {
        builder.onResolve({ filter: /^wat$/ }, (args) => {
          return { path: "/tmp/woah.js" };
        });
      },
    });
    
  • callback: OnStartCallback
    ): this;

    Register a callback which will be invoked when bundling starts. When using hot module reloading, this is called at the start of each incremental rebuild.

    @returns

    this for method chaining

    Bun.plugin({
      setup(builder) {
        builder.onStart(() => {
          console.log("bundle just started!!")
        });
      },
    });