tsdown
Version:
The Elegant Bundler for Libraries
51 lines (48 loc) • 2.95 kB
JavaScript
import { logger, resolveComma, setSilent, toArray } from "./general-C06aMSSY.js";
import { version } from "./package-DNcXUvW0.js";
import process from "node:process";
import { dim } from "ansis";
import Debug from "debug";
import { VERSION } from "rolldown";
import module from "node:module";
import { cac } from "cac";
//#region src/cli.ts
const cli = cac("tsdown");
cli.help().version(version);
cli.command("[...files]", "Bundle files", { ignoreOptionDefaultValue: true }).option("-c, --config <filename>", "Use a custom config file").option("--no-config", "Disable config file").option("--format <format>", "Bundle format: esm, cjs, iife", { default: "esm" }).option("--clean", "Clean output directory").option("--external <module>", "Mark dependencies as external").option("--minify", "Minify output").option("--debug [scope]", "Show debug logs").option("--target <target>", "Bundle target, e.g \"es2015\", \"esnext\"").option("--silent", "Suppress non-error logs").option("-d, --out-dir <dir>", "Output directory", { default: "dist" }).option("--treeshake", "Tree-shake bundle", { default: true }).option("--sourcemap", "Generate source map", { default: false }).option("--shims", "Enable cjs and esm shims ", { default: false }).option("--platform <platform>", "Target platform", { default: "node" }).option("--dts", "Generate dts files").option("--publint", "Enable publint", { default: false }).option("--unused", "Enable unused dependencies check", { default: false }).option("-w, --watch [path]", "Watch mode").option("--from-vite [vitest]", "Reuse config from Vite or Vitest").option("--report", "Size report", { default: true }).option("--env.* <value>", "Define compile-time env variables").option("--on-success <command>", "Command to run on success").action(async (input, flags) => {
setSilent(!!flags.silent);
logger.info(`tsdown ${dim`v${version}`} powered by rolldown ${dim`v${VERSION}`}`);
const { build: build$1 } = await import("./index.js");
if (input.length > 0) flags.entry = input;
await build$1(flags);
});
cli.command("migrate", "Migrate from tsup to tsdown").option("-c, --cwd <dir>", "Working directory").option("-d, --dry-run", "Dry run").action(async (args) => {
const { migrate } = await import("./migrate-Dm7wrtcG.js");
await migrate(args);
});
async function runCLI() {
cli.parse(process.argv, { run: false });
if (cli.options.debug) {
let namespace;
if (cli.options.debug === true) namespace = "tsdown:*";
else namespace = resolveComma(toArray(cli.options.debug)).map((v) => `tsdown:${v}`).join(",");
const enabled = Debug.disable();
if (enabled) namespace += `,${enabled}`;
Debug.enable(namespace);
Debug("tsdown:debug")("Debugging enabled", namespace);
}
try {
await cli.runMatchedCommand();
} catch (error) {
logger.fatal(error);
process.exit(1);
}
}
//#endregion
//#region src/run.ts
try {
module.enableCompileCache?.();
} catch {}
runCLI();
//#endregion