https://github.com/remorses/esbuild-plugins
Collection of useful esbuild js plugins
https://github.com/remorses/esbuild-plugins
Last synced: 8 months ago
JSON representation
Collection of useful esbuild js plugins
- Host: GitHub
- URL: https://github.com/remorses/esbuild-plugins
- Owner: remorses
- Created: 2020-12-02T15:54:58.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-08-04T18:16:29.000Z (over 2 years ago)
- Last Synced: 2025-05-12T07:02:39.557Z (8 months ago)
- Language: JavaScript
- Size: 263 KB
- Stars: 284
- Watchers: 6
- Forks: 31
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Esbuild plugins
# Plugins
- [x] `@esbuild-plugins/node-resolve`
- [x] `@esbuild-plugins/esm-externals`
- [x] `@esbuild-plugins/node-modules-polyfill` (out of date, use [esbuild-plugin-polyfill-node](https://github.com/cyco130/esbuild-plugin-polyfill-node) for up to date polyfills)
- [x] `@esbuild-plugins/node-globals-polyfill` (out of date, use [esbuild-plugin-polyfill-node](https://github.com/cyco130/esbuild-plugin-polyfill-node) for up to date polyfills)
## @esbuild-plugins/node-resolve
Resolve files with the [resolve](https://www.npmjs.com/package/resolve) package and adds support for Yarn berry PnP.
```ts
import NodeResolve from '@esbuild-plugins/node-resolve'
import { build } from 'esbuild'
build({
plugins: [
NodeResolve({
extensions: ['.ts', '.js'],
onResolved: (resolved) => {
if (resolved.includes('node_modules')) {
return {
external: true,
}
}
return resolved
},
}),
],
})
```
## @esbuild-plugins/esm-externals
Makes some packages externals and forces the output to be valid ESM
```ts
import EsmExternals from '@esbuild-plugins/esm-externals'
import { build } from 'esbuild'
build({
plugins: [EsmExternals({ externals: ['react', 'react-dom'] })],
})
```
## @esbuild-plugins/node-modules-polyfill
Polyfills nodejs builtin modules for the browser
```ts
import { NodeModulesPolyfillPlugin } from '@esbuild-plugins/node-modules-polyfill'
import { build } from 'esbuild'
build({
plugins: [NodeModulesPolyfillPlugin()],
})
```
## @esbuild-plugins/node-globals-polyfill
Polyfills nodejs globals like `process`
```ts
import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill'
import { build } from 'esbuild'
build({
plugins: [
NodeGlobalsPolyfillPlugin({
process: true,
buffer: true,
define: { 'process.env.var': '"hello"' }, // inject will override define, to keep env vars you must also pass define here https://github.com/evanw/esbuild/issues/660
}),
],
})
```
## Sponsors
[**Holocron**](https://holocron.so#github-esbuild-plugins)
[](https://holocron.so#github-esbuild-plugins)