# rollup-plugin-esbuild

> **💛 You can help the author become a full-time open-source maintainer by [sponsoring him on GitHub](https://github.com/sponsors/egoist).**

Latest version **6.2.1** (published 2025-02-27) · MIT license · 0 weekly downloads

## Install

```sh
npm install rollup-plugin-esbuild
pnpm add rollup-plugin-esbuild
yarn add rollup-plugin-esbuild
bun add rollup-plugin-esbuild
```

## Health

**Score 50/100 (C)** — status: stable.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

Negative: stale.

## Facts

| | |
|---|---|
| Version | 6.2.1 |
| Published | 2025-02-27 |
| First published | 2020-05-09 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=14.18.0 |
| Dependencies | 4 |
| Unpacked size | 26.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 641 |
| Author | EGOIST |
| Maintainers | egoist |

## Links

- npm: https://www.npmjs.com/package/rollup-plugin-esbuild
- Repository: https://github.com/egoist/rollup-plugin-esbuild
- Homepage: https://github.com/egoist/rollup-plugin-esbuild#readme
- Issues: https://github.com/egoist/rollup-plugin-esbuild/issues
- npm.io page: https://npm.io/package/rollup-plugin-esbuild

## Dependencies (4)

- [debug](https://npm.io/package/debug.md) ^4.4.0
- [get-tsconfig](https://npm.io/package/get-tsconfig.md) ^4.10.0
- [unplugin-utils](https://npm.io/package/unplugin-utils.md) ^0.2.4
- [es-module-lexer](https://npm.io/package/es-module-lexer.md) ^1.6.0

## Recent versions

- 6.2.1 (latest) — 2025-02-27
- 6.2.0 — 2025-02-05
- 6.1.1 — 2024-01-23
- 6.1.0 — 2023-10-08
- 6.0.2 — 2023-09-28
- 6.0.1 — 2023-09-21
- 6.0.0 — 2023-09-20
- 5.0.0 — 2022-11-08
- 4.10.3 — 2022-11-08
- 4.10.2 — 2022-11-07
- 4.10.1 — 2022-08-26
- 4.10.0 — 2022-08-26
- 4.9.3 — 2022-08-15
- 4.9.2 — 2022-08-14
- 4.9.1 — 2022-04-06
- … 50 more at https://npm.io/package/rollup-plugin-esbuild/versions

## README

**💛 You can help the author become a full-time open-source maintainer by [sponsoring him on GitHub](https://github.com/sponsors/egoist).**

---

# rollup-plugin-esbuild

![npm version](https://badgen.net/npm/v/rollup-plugin-esbuild) ![npm downloads](https://badgen.net/npm/dm/rollup-plugin-esbuild)

[esbuild](https://github.com/evanw/esbuild) is by far one of the fastest TS/ESNext to ES6 compilers and minifier, this plugin replaces `rollup-plugin-typescript2`, `@rollup/plugin-typescript` and `rollup-plugin-terser` for you.

## Install

```bash
yarn add esbuild rollup-plugin-esbuild --dev
```

## Usage

In `rollup.config.js`:

```js
import esbuild from 'rollup-plugin-esbuild'

export default {
  plugins: [
    esbuild({
      // All options are optional
      include: /\.[jt]sx?$/, // default, inferred from `loaders` option
      exclude: /node_modules/, // default
      sourceMap: true, // default
      minify: process.env.NODE_ENV === 'production',
      target: 'es2017', // default, or 'es20XX', 'esnext'
      jsx: 'transform', // default, or 'preserve'
      jsxFactory: 'React.createElement',
      jsxFragment: 'React.Fragment',
      // Like @rollup/plugin-replace
      define: {
        __VERSION__: '"x.y.z"',
      },
      tsconfig: 'tsconfig.json', // default
      // Add extra loaders
      loaders: {
        // Add .json files support
        // require @rollup/plugin-commonjs
        '.json': 'json',
        // Enable JSX in .js files too
        '.js': 'jsx',
      },
    }),
  ],
}
```

- `include` and `exclude` can be `String | RegExp | Array[...String|RegExp]`, when supplied it will override default values.
- It uses `jsx`, `jsxDev`, `jsxFactory`, `jsxFragmentFactory` and `target` options from your `tsconfig.json` as default values.

### Declaration File

There are serveral ways to generate declaration file:

- Use `tsc` with `emitDeclarationOnly`, the slowest way but you get type checking, it doesn't bundle the `.d.ts` files.
- Use [`rollup-plugin-dts`](https://github.com/Swatinem/rollup-plugin-dts) which generates and bundle `.d.ts`, also does type checking.
- Use [`api-extractor`](https://api-extractor.com/) by Microsoft, looks quite complex to me so I didn't try it, PR welcome to update this section.

### Use with Vue JSX

Use this with [rollup-plugin-vue-jsx](https://github.com/xxholly32/rollup-plugin-vue-jsx):

```js
import vueJsx from 'rollup-plugin-vue-jsx-compat'
import esbuild from 'rollup-plugin-esbuild'

export default {
  // ...
  plugins: [
    vueJsx(),
    esbuild({
      jsxFactory: 'vueJsxCompat',
    }),
  ],
}
```

### Standalone Minify Plugin

If you only want to use this plugin to minify your bundle:

```js
import { minify } from 'rollup-plugin-esbuild'

export default {
  plugins: [minify()],
}
```

### Optimizing Deps

You can use this plugin to pre-bundle dependencies using esbuild and inline them in the Rollup-generated bundle:

```js
esbuild({
  optimizeDeps: {
    include: ['vue', 'vue-router'],
  },
})
```

This eliminates the need of `@rollup/plugin-node-modules` and `@rollup/plugin-commonjs`.

Note that this is an **experimental features**, breaking changes might happen across minor version bump.

TODO: Maybe we can scan Rollup input files to get a list of deps to optimize automatically.

## Sponsors

[![sponsors](https://sponsors-images.egoist.sh/sponsors.svg)](https://github.com/sponsors/egoist)

## License

MIT &copy; [EGOIST (Kevin Titor)](https://github.com/sponsors/egoist)

---
_Source: https://npm.io/package/rollup-plugin-esbuild · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
