@esbuild-plugins/node-resolve
@esbuild-plugins/esm-externals
@esbuild-plugins/node-modules-polyfill
(out of date, use esbuild-plugin-polyfill-node for up to date polyfills)@esbuild-plugins/node-globals-polyfill
(out of date, use esbuild-plugin-polyfill-node for up to date polyfills)Resolve files with the resolve package and adds support for Yarn berry PnP.
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
},
}),
],
})
Makes some packages externals and forces the output to be valid ESM
import EsmExternals from '@esbuild-plugins/esm-externals'
import { build } from 'esbuild'
build({
plugins: [EsmExternals({ externals: ['react', 'react-dom'] })],
})
Polyfills nodejs builtin modules for the browser
import { NodeModulesPolyfillPlugin } from '@esbuild-plugins/node-modules-polyfill'
import { build } from 'esbuild'
build({
plugins: [NodeModulesPolyfillPlugin()],
})
Polyfills nodejs globals like process
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
}),
],
})