0.2.1 • Published 4 months ago

esbuild-plugin-autoload v0.2.1

Weekly downloads
-
License
-
Repository
github
Last release
4 months ago

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

!WARNING For now, it runs only by Bun runtime

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 --compile mode without extra step (Feature issue)

Options

KeyTypeDefaultDescription
pattern?string"**\/*.{ts,tsx,js,jsx,mjs,cjs}"Glob patterns
directory?string"./src/routes"The folder where something that will be autoloaded are located

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 bun build.ts and run with bun out/index.ts

Supported autoload-ers

Sadly, this plugin can only work with supported libraries.

0.2.1

4 months ago

0.2.0

5 months ago

0.1.2

5 months ago

0.1.1

5 months ago

0.1.0

5 months ago