Esbuild Plugin
Purpose
Bundles JavaScript from src/js/app.js into dist/output.js?v=7e5120dfbaf9 using esbuild. Supports minification, source maps, and dead code elimination.
Location
- Package:
@shevky/plugin-esbuild - Main:
plugin-esbuild/main.js - Runtime name:
shevky-esbuild
Lifecycle Hooks
| Hook | Implemented |
|---|---|
assets:copy | ✓ |
How It Works
During assets:copy:
- Resolves source (
{root}/src/js/app.js) and output ({root}/dist/output.js?v=7e5120dfbaf9) paths. - Checks source file exists (warns and skips if missing).
- Constructs esbuild args:
--bundle --format=esm --target=es2018. - When
build.minifyis true, adds:--minify,--drop:debugger,--drop:console,--ignore-annotations,--sourcemap. - Runs via
exec.executeNpx()from the plugin root directory.
Build Output Settings
| Setting | Value |
|---|---|
| Bundle | Yes |
| Format | ESM |
| Target | ES2018 |
| Sourcemap | Only when minifying |
| Console/debugger removal | Only when minifying |
Dependencies
@shevky/base-io,exec,pluginesbuild^0.27.3 - bundled as a dependency
Risks and Limitations
- Hardcoded source path: Expects exactly
src/js/app.js. - Runs via npx: Requires esbuild to be available in the plugin's dependency tree.
- No custom config: Does not support esbuild plugins or user-provided configuration.
Related
- TailwindCSS Plugin - similar asset compilation pattern