obuild
Version:
Zero-config ESM/TS package builder
54 lines (52 loc) • 1.14 kB
JavaScript
#!/usr/bin/env node
import { build } from "./_chunks/build-CGTmj1PW.mjs";
import { consola } from "consola";
import { parseArgs } from "node:util";
import { loadConfig } from "c12";
//#region src/cli.ts
const args = parseArgs({
args: process.argv.slice(2),
allowPositionals: true,
options: {
dir: {
type: "string",
default: "."
},
stub: {
type: "boolean",
default: false
}
}
});
const { config = {} } = await loadConfig({
name: "obuild",
configFile: "build.config",
cwd: args.values.dir
});
const rawEntries = args.positionals.length > 0 ? args.positionals : config.entries || [];
const entries = rawEntries.map((entry) => {
if (typeof entry === "string") {
const [input, outDir] = entry.split(":");
return input.endsWith("/") ? {
type: "transform",
input,
outDir
} : {
type: "bundle",
input: input.split(","),
outDir
};
}
return entry;
});
if (args.values.stub) for (const entry of entries) entry.stub = true;
if (rawEntries.length === 0) {
consola.error("No build entries specified.");
process.exit(1);
}
await build({
cwd: args.values.dir,
...config,
entries
});
//#endregion