Skip to content

CLI Configuration

Minimajs is configured via a minimajs.config.ts (or .js) file in the root of your project.

ts
import { defineConfig } from "@minimajs/cli";

export default defineConfig({
  entry: ["src/index.ts", "src/**/module.ts"],
  outdir: "dist",
});

defineConfig also accepts a factory receiving { mode, dev } — where mode is "dev" | "build" | "start" and dev is shorthand for mode === "dev":

ts
import { defineConfig } from "@minimajs/cli";

export default defineConfig(({ dev, mode }) => ({
  sourcemap: dev,
  minify: mode === "build",
  envFile: ".env",
}));

Options

OptionTypeDefaultDescription
entrystring[]["src/index.ts", "src/**/module.ts"]Entry points or glob patterns
outdirstring"dist"Output directory
cleanbooleantrueClean output directory before each build
checkbooleantrueRun TypeScript type checking in watch mode
minifybooleanfalseMinify output
sourcemapbooleanfalseEmit source maps
tsconfigstring"tsconfig.json"Path to tsconfig
runbooleanfalseRun the output after build
importstring[][]Additional entry points to import at startup
loaderRecord<string, Loader>{}Custom esbuild loaders
killSignalNodeJS.Signals"SIGTERM"Signal used to stop the running process
esbuildEsbuildOverridesRaw esbuild options (merged last)

Plugins

Plugins are registered via a named plugins export — separate from defineConfig. The same CliPlugin type covers all extension points: esbuild entry/setup, CLI commands (root-level), and generators (under ./app add).

ts
// minimajs.config.ts
import { defineConfig, definePlugins } from "@minimajs/cli";
import { queuePlugin } from "@myapp/queue-plugin";

export default defineConfig(({ dev }) => ({ sourcemap: dev }));

export const plugins = definePlugins([queuePlugin()]);
// or factory: definePlugins(({ dev }) => [queuePlugin({ verbose: dev })])

See Plugins for the full guide — esbuild hooks, CLI commands, generators, and publishing.

esbuild Passthrough

Pass raw esbuild options that are merged into the final build config. Managed options (entryPoints, outdir, plugins, metafile, bundle, platform, format, splitting) cannot be overridden.

ts
import { defineConfig } from "@minimajs/cli";

export default defineConfig({
  esbuild: {
    define: {
      "process.env.VERSION": JSON.stringify("1.0.0"),
    },
    banner: {
      js: "// generated by minimajs",
    },
  },
});