First, check if esbuild supports the transform you need (it's faster).
If not, you can add the Babel plugin you need with this plugin.
npm install esbuild-plugin-babel -D
esbuild.config.js
import esbuild from 'esbuild';
import babel from 'esbuild-plugin-babel';
esbuild
.build({
entryPoints: ['index.js'],
bundle: true,
outfile: 'main.js',
plugins: [babel()],
// target: ['es5'] // if you target es5 with babel, add this option
})
.catch(() => process.exit(1));
package.json
{
"type": "module",
"scripts": {
"start": "node esbuild.config.js"
}
}
esbuild.config.js
babel({
filter: /.*/,
namespace: '',
config: {} // babel config here or in babel.config.json
});
{
"sourceMaps": "inline",
"presets": [...],
"plugins": [...]
}
esbuild-serve → Serve with live reload for esbuild.
esbuild-plugin-pipe → Pipe esbuild plugins output.
esbuild-plugin-svg → Svg files import plugin for esbuild.
esbuild-plugin-postcss-literal → PostCSS tagged template literals plugin for esbuild.