esbuild-plugin-autoload
v0.3.3
Published
Bun/esbuild plugin for work with autoload at runtime
Maintainers
Readme
esbuild-plugin-autoload
This esbuild/Bun bundler plugin helps to use libraries for autoload endpoints, command and etc. At the build stage, it obtains what needs to be import-ed and includes it in the final file
[!IMPORTANT] You need
BunorNode@>=22to run this plugin
Bun build usage
// @filename: build.ts
import { autoload } from "esbuild-plugin-autoload"; // default import also supported
await Bun.build({
entrypoints: ["src/index.ts"],
target: "bun",
outdir: "out",
plugins: [autoload()],
}).then(console.log);Then, build it with bun build.ts and run with bun out/index.ts
Bun compile usage
You can bundle and then compile it into a single executable binary file
import { autoload } from "esbuild-plugin-autoload"; // default import also supported
await Bun.build({
entrypoints: ["src/index.ts"],
target: "bun",
outdir: "out",
plugins: [autoload()],
}).then(console.log);
await Bun.$`bun build --compile out/index.js`;[!WARNING] You cannot use it in
bun build --compilemode without extra step (Feature issue)
Options
| Key | Type | Default | Description | | ---------- | ------- | ---------------------------------- | ------------------------------------------------------------------- | | pattern? | string | "**/*.{ts,tsx,js,jsx,mjs,cjs}" | Glob patterns | | directory? | string | "./src/routes" | The folder where something that will be autoloaded are located | | debug? | boolean | false | Debug mode, will log generated code |
You can also pass the directory by the first argument instead of an object with full options
await Bun.build({
entrypoints: ["src/index.ts"],
target: "bun",
outdir: "out",
plugins: [autoload("./src/commands")],
}).then(console.log);esbuild usage
// @filename: build.ts
import { autoload } from "esbuild-plugin-autoload"; // default import also supported
import esbuild from "esbuild";
await esbuild
.build({
entrypoints: ["src/index.ts"],
outdir: "out",
bundle: true,
plugins: [autoload()],
})
.then(console.log);Then, build it with bunx tsx build.ts and run with node out/index.ts
Supported autoload-ers
Sadly, this plugin can only work with supported libraries.
TODO:
- [ ] Think more about multiple plugins usage with different CWD
- [ ] Rewrite to
unplugin
