@adddog/build-configs 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +516 -0
- package/dist/cli/index.d.mts +1 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.mjs +832 -0
- package/dist/cli/index.mjs.map +1 -0
- package/dist/index.d.mts +49 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.mjs +15 -0
- package/dist/index.mjs.map +1 -0
- package/dist/presets/index.d.mts +57 -0
- package/dist/presets/index.d.ts +57 -0
- package/dist/presets/index.mjs +631 -0
- package/dist/presets/index.mjs.map +1 -0
- package/dist/tsup.config.d.mts +31 -0
- package/dist/tsup.config.d.ts +31 -0
- package/dist/tsup.config.mjs +44 -0
- package/dist/tsup.config.mjs.map +1 -0
- package/dist/unbuild.config.d.mts +48 -0
- package/dist/unbuild.config.d.ts +48 -0
- package/dist/unbuild.config.mjs +37 -0
- package/dist/unbuild.config.mjs.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/cli/utils/logger.ts","../../src/cli/utils/config-loader.ts","../../src/cli/commands/build.ts","../../src/cli/templates/index.ts","../../src/cli/commands/init.ts","../../src/cli/utils/validators.ts","../../src/cli/commands/validate.ts","../../src/cli/commands/info.ts","../../src/cli/commands/watch.ts","../../src/cli/index.ts"],"sourcesContent":["import { consola } from \"consola\";\nimport pc from \"picocolors\";\n\n/**\n * Custom logger instance with colorized output\n */\nexport const logger = consola.create({\n formatOptions: {\n colors: true,\n compact: false,\n date: false,\n },\n});\n\n/**\n * Color utilities for consistent styling\n */\nexport const colors = {\n primary: pc.cyan,\n success: pc.green,\n warning: pc.yellow,\n error: pc.red,\n info: pc.blue,\n dim: pc.dim,\n bold: pc.bold,\n bundler: pc.magenta,\n file: pc.yellow,\n command: pc.green,\n};\n\n/**\n * Log a formatted success message\n */\nexport function logSuccess(message: string): void {\n logger.success(colors.success(message));\n}\n\n/**\n * Log a formatted error message\n */\nexport function logError(message: string, error?: Error): void {\n logger.error(colors.error(message));\n if (error) {\n logger.error(colors.dim(error.message));\n if (error.stack) {\n logger.error(colors.dim(error.stack));\n }\n }\n}\n\n/**\n * Log a formatted warning message\n */\nexport function logWarning(message: string): void {\n logger.warn(colors.warning(message));\n}\n\n/**\n * Log a formatted info message\n */\nexport function logInfo(message: string): void {\n logger.info(colors.info(message));\n}\n\n/**\n * Log a formatted step message\n */\nexport function logStep(step: number, total: number, message: string): void {\n logger.info(\n `${colors.dim(`[${step}/${total}]`)} ${colors.primary(message)}`,\n );\n}\n\n/**\n * Log a formatted file path\n */\nexport function logFile(action: string, path: string): void {\n logger.info(`${colors.success(action)} ${colors.file(path)}`);\n}\n\n/**\n * Log bundler selection\n */\nexport function logBundler(bundler: \"tsup\" | \"unbuild\"): void {\n logger.info(`Using bundler: ${colors.bundler(bundler)}`);\n}\n\n/**\n * Create a box for prominent messages\n */\nexport function logBox(title: string, content: string[]): void {\n const maxLength = Math.max(\n title.length,\n ...content.map((line) => line.length),\n );\n const border = \"─\".repeat(maxLength + 4);\n\n console.log(colors.primary(`┌${border}┐`));\n console.log(\n colors.primary(`│ ${colors.bold(title.padEnd(maxLength))} │`),\n );\n console.log(colors.primary(`├${border}┤`));\n content.forEach((line) => {\n console.log(colors.primary(`│ ${line.padEnd(maxLength)} │`));\n });\n console.log(colors.primary(`└${border}┘`));\n}\n","import { existsSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { resolve, join } from \"node:path\";\nimport { createJiti } from \"jiti\";\nimport { defu } from \"defu\";\nimport type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport { getPreset } from \"../../presets\";\nimport { logger } from \"./logger\";\n\n/**\n * Config file names to search for (in order of priority)\n */\nconst CONFIG_FILES = [\n \"build.config.ts\",\n \"build.config.js\",\n \"build.config.mjs\",\n \"build.config.cjs\",\n \"tsup.config.ts\",\n \"tsup.config.js\",\n \"tsup.config.mjs\",\n \".radbuildrc.ts\",\n \".radbuildrc.js\",\n \".radbuildrc.json\",\n];\n\n/**\n * Detect which bundler is being used based on existing config files\n */\nexport async function detectBundler(\n cwd: string = process.cwd(),\n): Promise<\"tsup\" | \"unbuild\" | null> {\n // Check for tsup config\n for (const file of [\"tsup.config.ts\", \"tsup.config.js\", \"tsup.config.mjs\"]) {\n if (existsSync(join(cwd, file))) {\n return \"tsup\";\n }\n }\n\n // Check for unbuild config\n for (const file of [\n \"build.config.ts\",\n \"build.config.js\",\n \"build.config.mjs\",\n ]) {\n if (existsSync(join(cwd, file))) {\n const configPath = join(cwd, file);\n try {\n const jiti = createJiti(cwd, {\n interopDefault: true,\n });\n const config = (await jiti.import(configPath)) as any;\n\n // Check if config has unbuild-specific properties\n if (\n config.entries ||\n config.rollup ||\n (config[0] && config[0].entries)\n ) {\n return \"unbuild\";\n }\n } catch {\n // If we can't load the config, continue\n }\n }\n }\n\n // Check package.json scripts\n try {\n const pkgPath = join(cwd, \"package.json\");\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(await readFile(pkgPath, \"utf-8\"));\n if (pkg.scripts?.build) {\n if (pkg.scripts.build.includes(\"tsup\")) return \"tsup\";\n if (pkg.scripts.build.includes(\"unbuild\")) return \"unbuild\";\n }\n }\n } catch {\n // Ignore errors\n }\n\n return null;\n}\n\n/**\n * Discover config file in the current working directory\n */\nexport async function discoverConfigFile(\n cwd: string = process.cwd(),\n customPath?: string,\n): Promise<string | null> {\n // If custom path provided, use it\n if (customPath) {\n const fullPath = resolve(cwd, customPath);\n if (existsSync(fullPath)) {\n return fullPath;\n }\n logger.warn(`Custom config file not found: ${customPath}`);\n return null;\n }\n\n // Search for config files\n for (const file of CONFIG_FILES) {\n const fullPath = join(cwd, file);\n if (existsSync(fullPath)) {\n return fullPath;\n }\n }\n\n // Check package.json for config\n const pkgPath = join(cwd, \"package.json\");\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(await readFile(pkgPath, \"utf-8\"));\n if (pkg.radbuild) {\n return pkgPath;\n }\n } catch {\n // Ignore errors\n }\n }\n\n return null;\n}\n\n/**\n * Load config from a file\n */\nexport async function loadConfigFile<T = TsupOptions | UnbuildConfig>(\n configPath: string,\n cwd: string = process.cwd(),\n): Promise<T | null> {\n try {\n // Handle package.json config\n if (configPath.endsWith(\"package.json\")) {\n const pkg = JSON.parse(await readFile(configPath, \"utf-8\"));\n return (pkg.radbuild as T) || null;\n }\n\n // Handle JSON config\n if (configPath.endsWith(\".json\")) {\n return JSON.parse(await readFile(configPath, \"utf-8\")) as T;\n }\n\n // Handle JS/TS config with jiti\n const jiti = createJiti(cwd, {\n interopDefault: true,\n });\n\n const config = (await jiti.import(configPath)) as T;\n\n return config;\n } catch (error) {\n logger.error(\n `Failed to load config from ${configPath}`,\n error as Error,\n );\n return null;\n }\n}\n\n/**\n * Load and merge configuration from multiple sources\n */\nexport async function loadConfig(options: {\n cwd?: string;\n configPath?: string;\n preset?: string;\n bundler?: \"tsup\" | \"unbuild\" | \"auto\";\n cliFlags?: Partial<TsupOptions | UnbuildConfig>;\n}): Promise<{\n config: TsupOptions | UnbuildConfig;\n bundler: \"tsup\" | \"unbuild\";\n configPath: string | null;\n}> {\n const cwd = options.cwd ?? process.cwd();\n\n // 1. Detect bundler if not specified\n let bundler = options.bundler === \"auto\" ? null : options.bundler;\n if (!bundler) {\n bundler = (await detectBundler(cwd)) ?? \"unbuild\";\n }\n\n // 2. Load preset if specified\n let presetConfig = {};\n if (options.preset) {\n const preset = getPreset(options.preset);\n if (preset) {\n presetConfig =\n bundler === \"tsup\" ? preset.tsup ?? {} : preset.unbuild ?? {};\n logger.info(`Using preset: ${preset.name}`);\n } else {\n logger.warn(`Preset not found: ${options.preset}`);\n }\n }\n\n // 3. Discover and load project config\n const configPath = await discoverConfigFile(cwd, options.configPath);\n let projectConfig = {};\n if (configPath) {\n const loaded = await loadConfigFile(configPath, cwd);\n if (loaded) {\n projectConfig = loaded;\n logger.info(`Loaded config from: ${configPath}`);\n }\n }\n\n // 4. Merge configs (right takes precedence)\n const config = defu(\n options.cliFlags ?? {},\n projectConfig,\n presetConfig,\n {}, // Default config is applied in the makers\n );\n\n return {\n config,\n bundler,\n configPath,\n };\n}\n\n/**\n * Get package.json from current directory\n */\nexport async function getPackageJson(\n cwd: string = process.cwd(),\n): Promise<Record<string, any> | null> {\n try {\n const pkgPath = join(cwd, \"package.json\");\n if (!existsSync(pkgPath)) return null;\n\n return JSON.parse(await readFile(pkgPath, \"utf-8\"));\n } catch {\n return null;\n }\n}\n\n/**\n * Update package.json with new fields\n */\nexport async function updatePackageJson(\n updates: Record<string, any>,\n cwd: string = process.cwd(),\n): Promise<void> {\n const { writeFile } = await import(\"node:fs/promises\");\n const pkgPath = join(cwd, \"package.json\");\n\n const pkg = (await getPackageJson(cwd)) ?? {};\n const updated = defu(updates, pkg);\n\n await writeFile(pkgPath, JSON.stringify(updated, null, 2) + \"\\n\");\n}\n","import { execa } from \"execa\";\nimport { existsSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport { loadConfig } from \"../utils/config-loader\";\nimport { logger, logSuccess, logError, logBundler } from \"../utils/logger\";\nimport { makeTsupConfig } from \"../../tsup.config\";\nimport { makeUnbuildConfig } from \"../../unbuild.config\";\n\ninterface BuildCommandOptions {\n config?: string;\n preset?: string;\n bundler?: \"tsup\" | \"unbuild\";\n format?: string;\n minify?: boolean;\n watch?: boolean;\n sourcemap?: boolean;\n dts?: boolean;\n clean?: boolean;\n}\n\n/**\n * Build command handler\n */\nexport async function buildCommand(\n entries: string[],\n options: BuildCommandOptions,\n): Promise<void> {\n try {\n logger.start(\"Building project...\");\n\n // Parse CLI flags\n const cliFlags: Partial<TsupOptions> & Partial<UnbuildConfig> = {};\n if (options.format) {\n (cliFlags as any).format = options.format.split(\",\");\n }\n if (options.minify !== undefined) {\n (cliFlags as any).minify = options.minify;\n }\n if (options.sourcemap !== undefined) {\n cliFlags.sourcemap = options.sourcemap;\n }\n if (options.dts !== undefined) {\n (cliFlags as any).dts = options.dts;\n (cliFlags as any).declaration = options.dts;\n }\n if (options.clean !== undefined) {\n cliFlags.clean = options.clean;\n }\n if (entries.length > 0) {\n (cliFlags as TsupOptions).entry = entries;\n (cliFlags as UnbuildConfig).entries = entries;\n }\n\n // Load merged config\n const { config, bundler, configPath } = await loadConfig({\n ...(options.config && { configPath: options.config }),\n ...(options.preset && { preset: options.preset }),\n bundler: options.bundler ?? \"auto\",\n cliFlags,\n });\n\n logBundler(bundler);\n\n // Create temporary config file for the build\n const tempConfigPath = join(\n process.cwd(),\n `.rad-build-temp.${bundler === \"tsup\" ? \"tsup\" : \"build\"}.config.js`,\n );\n\n try {\n // Generate final config\n const finalConfig =\n bundler === \"tsup\"\n ? makeTsupConfig(config as TsupOptions)\n : makeUnbuildConfig(config as UnbuildConfig);\n\n // Write temp config\n const configContent = `export default ${JSON.stringify(finalConfig, null, 2)}`;\n writeFileSync(tempConfigPath, configContent);\n\n // Run the appropriate bundler\n if (bundler === \"tsup\") {\n await execa(\n \"tsup\",\n [\n \"--config\",\n tempConfigPath,\n ...(options.watch ? [\"--watch\"] : []),\n ],\n {\n stdio: \"inherit\",\n cwd: process.cwd(),\n },\n );\n } else {\n await execa(\n \"unbuild\",\n [\n ...(options.watch ? [\"--watch\"] : []),\n ...(configPath ? [] : [\"--config\", tempConfigPath]),\n ],\n {\n stdio: \"inherit\",\n cwd: process.cwd(),\n },\n );\n }\n\n logSuccess(\"Build completed successfully!\");\n } finally {\n // Clean up temp config\n if (existsSync(tempConfigPath)) {\n try {\n const { unlinkSync } = await import(\"node:fs\");\n unlinkSync(tempConfigPath);\n } catch {\n // Ignore cleanup errors\n }\n }\n }\n } catch (error) {\n logError(\"Build failed\", error as Error);\n process.exit(1);\n }\n}\n","import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\n\n/**\n * Generate tsup config file content\n */\nexport function generateTsupConfig(options: Partial<TsupOptions> = {}): string {\n const config = {\n entry: options.entry ?? [\"src/index.ts\"],\n format: options.format ?? [\"esm\", \"cjs\"],\n dts: options.dts ?? true,\n sourcemap: options.sourcemap ?? true,\n clean: options.clean ?? true,\n ...options,\n };\n\n return `import { makeTsupConfig } from \"@adddog/build-configs/tsup\";\n\nexport default makeTsupConfig(${JSON.stringify(config, null, 2)});\n`;\n}\n\n/**\n * Generate unbuild config file content\n */\nexport function generateUnbuildConfig(\n options: Partial<UnbuildConfig> = {},\n): string {\n const config = {\n entries: options.entries ?? [\"src/index\"],\n declaration: options.declaration ?? true,\n rollup: {\n emitCJS: options.rollup?.emitCJS ?? false,\n ...options.rollup,\n },\n ...options,\n };\n\n return `import { makeUnbuildConfig } from \"@adddog/build-configs/unbuild\";\n\nexport default makeUnbuildConfig(${JSON.stringify(config, null, 2)});\n`;\n}\n\n/**\n * Generate package.json scripts\n */\nexport function generatePackageJsonScripts(\n bundler: \"tsup\" | \"unbuild\",\n): Record<string, string> {\n const buildCommand = bundler === \"tsup\" ? \"tsup\" : \"unbuild\";\n const watchCommand =\n bundler === \"tsup\" ? \"tsup --watch\" : \"unbuild --watch\";\n\n return {\n build: buildCommand,\n \"build:watch\": watchCommand,\n prepublishOnly: \"pnpm build\",\n };\n}\n\n/**\n * Generate package.json exports based on bundler\n */\nexport function generatePackageJsonExports(\n _bundler: \"tsup\" | \"unbuild\",\n formats: string[],\n): Record<string, any> {\n const hasESM = formats.includes(\"esm\");\n const hasCJS = formats.includes(\"cjs\");\n\n if (hasESM && hasCJS) {\n return {\n \".\": {\n types: \"./dist/index.d.ts\",\n import: \"./dist/index.mjs\",\n require: \"./dist/index.cjs\",\n },\n };\n } else if (hasESM) {\n return {\n \".\": {\n types: \"./dist/index.d.ts\",\n import: \"./dist/index.mjs\",\n },\n };\n } else {\n return {\n \".\": {\n types: \"./dist/index.d.ts\",\n require: \"./dist/index.cjs\",\n },\n };\n }\n}\n\n/**\n * Generate complete tsconfig.json for build\n */\nexport function generateTsConfig(): string {\n return `{\n \"extends\": \"@rad/config/base.tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"dist\",\n \"rootDir\": \"src\",\n \"declaration\": true,\n \"declarationMap\": true\n },\n \"include\": [\"src/**/*\"],\n \"exclude\": [\"node_modules\", \"dist\", \"**/*.test.ts\", \"**/*.spec.ts\"]\n}\n`;\n}\n","import * as p from \"@clack/prompts\";\nimport { existsSync } from \"node:fs\";\nimport { writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { getPackageJson, updatePackageJson } from \"../utils/config-loader\";\nimport { colors, logError } from \"../utils/logger\";\nimport {\n generateTsupConfig,\n generateUnbuildConfig,\n generatePackageJsonScripts,\n generatePackageJsonExports,\n} from \"../templates\";\nimport { getPreset, listPresets } from \"../../presets\";\n\ninterface InitCommandOptions {\n bundler?: \"tsup\" | \"unbuild\";\n preset?: string;\n force?: boolean;\n}\n\n/**\n * Init command handler - Interactive project initialization\n */\nexport async function initCommand(options: InitCommandOptions): Promise<void> {\n try {\n p.intro(colors.bold(\"Welcome to @adddog/build-configs!\"));\n\n // Check if config already exists\n const tsupConfigExists = existsSync(\"tsup.config.ts\");\n const buildConfigExists = existsSync(\"build.config.ts\");\n\n if ((tsupConfigExists || buildConfigExists) && !options.force) {\n const shouldOverwrite = await p.confirm({\n message: \"Config file already exists. Overwrite?\",\n initialValue: false,\n });\n\n if (p.isCancel(shouldOverwrite) || !shouldOverwrite) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n }\n\n // 1. Choose bundler\n const bundler =\n options.bundler ??\n (await p.select({\n message: \"Which bundler do you prefer?\",\n options: [\n {\n value: \"unbuild\",\n label: \"unbuild\",\n hint: \"Preserves file structure, better for libraries\",\n },\n {\n value: \"tsup\",\n label: \"tsup\",\n hint: \"Faster builds, bundles everything\",\n },\n ],\n }));\n\n if (p.isCancel(bundler)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n // 2. Choose preset or custom\n const usePreset = await p.select({\n message: \"Start with a preset or custom config?\",\n options: [\n { value: \"preset\", label: \"Use a preset\" },\n { value: \"custom\", label: \"Custom configuration\" },\n ],\n });\n\n if (p.isCancel(usePreset)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n let selectedPreset: string | undefined;\n let finalConfig: any = {};\n\n if (usePreset === \"preset\") {\n // Get presets for selected bundler\n const availablePresets = listPresets().filter((name) => {\n const preset = getPreset(name);\n return (\n preset &&\n (preset.bundler === bundler || preset.bundler === \"both\")\n );\n });\n\n const presetChoice = await p.select({\n message: \"Select a preset:\",\n options: availablePresets.map((name) => {\n const preset = getPreset(name)!;\n return {\n value: name,\n label: name,\n hint: preset.description,\n };\n }),\n });\n\n selectedPreset = String(presetChoice);\n\n if (p.isCancel(selectedPreset)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n const preset = getPreset(selectedPreset as string);\n if (preset) {\n finalConfig =\n bundler === \"tsup\" ? preset.tsup ?? {} : preset.unbuild ?? {};\n }\n } else {\n // Custom configuration\n const formats = await p.multiselect({\n message: \"Output formats?\",\n options: [\n { value: \"esm\", label: \"ESM (modern)\" },\n { value: \"cjs\", label: \"CommonJS (compatibility)\" },\n ...(bundler === \"tsup\"\n ? [{ value: \"iife\", label: \"IIFE (browser global)\" }]\n : []),\n ],\n initialValues: [\"esm\"],\n required: true,\n });\n\n if (p.isCancel(formats)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n const features = await p.multiselect({\n message: \"Additional features?\",\n options: [\n { value: \"sourcemaps\", label: \"Generate sourcemaps\" },\n { value: \"minify\", label: \"Minify output\" },\n { value: \"declarations\", label: \"TypeScript declarations\" },\n ],\n initialValues: [\"sourcemaps\", \"declarations\"],\n });\n\n if (p.isCancel(features)) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n // Build config from answers\n finalConfig = {\n format: formats,\n sourcemap: (features as string[]).includes(\"sourcemaps\"),\n minify: (features as string[]).includes(\"minify\"),\n };\n\n if (bundler === \"tsup\") {\n finalConfig.dts = (features as string[]).includes(\"declarations\");\n } else {\n finalConfig.declaration = (features as string[]).includes(\n \"declarations\",\n );\n finalConfig.rollup = {\n emitCJS: (formats as string[]).includes(\"cjs\"),\n };\n }\n }\n\n // Generate and write config file\n const spinner = p.spinner();\n spinner.start(\"Creating configuration files...\");\n\n try {\n // Write config file\n const configFileName =\n bundler === \"tsup\" ? \"tsup.config.ts\" : \"build.config.ts\";\n const configContent =\n bundler === \"tsup\"\n ? generateTsupConfig(finalConfig)\n : generateUnbuildConfig(finalConfig);\n\n await writeFile(join(process.cwd(), configFileName), configContent);\n\n // Update package.json\n const pkg = await getPackageJson();\n if (pkg) {\n const scripts = generatePackageJsonScripts(bundler);\n const exports = generatePackageJsonExports(\n bundler,\n finalConfig.format ?? [\"esm\", \"cjs\"],\n );\n\n await updatePackageJson({\n scripts: { ...pkg.scripts, ...scripts },\n exports: exports,\n main:\n finalConfig.format?.includes(\"cjs\") ||\n finalConfig.rollup?.emitCJS\n ? \"./dist/index.cjs\"\n : undefined,\n module: \"./dist/index.mjs\",\n types: \"./dist/index.d.ts\",\n files: [\"dist\"],\n });\n }\n\n spinner.stop(\"Configuration created successfully!\");\n\n p.outro(\n colors.success(`\nNext steps:\n 1. ${colors.command(\"pnpm install\")} - Install dependencies\n 2. ${colors.command(\"pnpm build\")} - Build your project\n 3. Edit ${colors.file(configFileName)} to customize\n\n${selectedPreset ? `Using preset: ${colors.primary(selectedPreset)}` : \"\"}\n\nHappy building! 🚀\n `),\n );\n } catch (error) {\n spinner.stop(\"Failed to create configuration\");\n throw error;\n }\n } catch (error) {\n logError(\"Initialization failed\", error as Error);\n process.exit(1);\n }\n}\n","import { z } from \"zod\";\n\n/**\n * Zod schema for tsup format\n */\nconst TsupFormatSchema = z.enum([\"cjs\", \"esm\", \"iife\"]);\n\n/**\n * Zod schema for tsup platform\n */\nconst TsupPlatformSchema = z.enum([\"node\", \"browser\", \"neutral\"]);\n\n/**\n * Zod schema for tsup DTS configuration\n */\nconst TsupDtsSchema = z.union([\n z.boolean(),\n z.string(),\n z.object({\n entry: z.any().optional(),\n resolve: z\n .union([z.boolean(), z.array(z.union([z.string(), z.instanceof(RegExp)]))])\n .optional(),\n only: z.boolean().optional(),\n banner: z.string().optional(),\n footer: z.string().optional(),\n compilerOptions: z.any().optional(),\n }),\n]);\n\n/**\n * Zod schema for tsup entry\n */\nconst TsupEntrySchema = z.union([\n z.array(z.string()),\n z.record(z.string(), z.string()),\n]);\n\n/**\n * Zod schema for tsup configuration\n */\nexport const TsupConfigSchema = z.object({\n name: z.string().optional(),\n entry: TsupEntrySchema.optional(),\n entryPoints: TsupEntrySchema.optional(),\n format: z.union([TsupFormatSchema, z.array(TsupFormatSchema)]).optional(),\n outDir: z.string().optional(),\n target: z.union([z.string(), z.array(z.string())]).optional(),\n platform: TsupPlatformSchema.optional(),\n dts: TsupDtsSchema.optional(),\n experimentalDts: z\n .union([\n z.boolean(),\n z.string(),\n z.object({\n entry: z.any().optional(),\n compilerOptions: z.any().optional(),\n }),\n ])\n .optional(),\n sourcemap: z.union([z.boolean(), z.literal(\"inline\")]).optional(),\n minify: z.union([z.boolean(), z.literal(\"terser\")]).optional(),\n bundle: z.boolean().optional(),\n splitting: z.boolean().optional(),\n clean: z.union([z.boolean(), z.array(z.string())]).optional(),\n treeshake: z.any().optional(),\n external: z.array(z.union([z.string(), z.instanceof(RegExp)])).optional(),\n noExternal: z.array(z.union([z.string(), z.instanceof(RegExp)])).optional(),\n skipNodeModulesBundle: z.boolean().optional(),\n keepNames: z.boolean().optional(),\n watch: z\n .union([z.boolean(), z.string(), z.array(z.union([z.string(), z.boolean()]))])\n .optional(),\n ignoreWatch: z.union([z.array(z.string()), z.string()]).optional(),\n tsconfig: z.string().optional(),\n shims: z.boolean().optional(),\n cjsInterop: z.boolean().optional(),\n removeNodeProtocol: z.boolean().optional(),\n});\n\n/**\n * Zod schema for unbuild builder types\n */\nconst UnbuildBuilderSchema = z.enum([\"rollup\", \"mkdist\", \"copy\", \"untyped\"]);\n\n/**\n * Zod schema for unbuild declaration\n */\nconst UnbuildDeclarationSchema = z.union([\n z.boolean(),\n z.literal(\"compatible\"),\n z.literal(\"node16\"),\n]);\n\n/**\n * Zod schema for unbuild entry\n */\nconst UnbuildEntrySchema = z.union([\n z.string(),\n z.object({\n builder: UnbuildBuilderSchema.optional(),\n input: z.string(),\n name: z.string().optional(),\n outDir: z.string().optional(),\n declaration: UnbuildDeclarationSchema.optional(),\n format: z.enum([\"esm\", \"cjs\"]).optional(),\n ext: z.string().optional(),\n }),\n]);\n\n/**\n * Zod schema for unbuild configuration\n */\nexport const UnbuildConfigSchema = z.object({\n name: z.string().optional(),\n rootDir: z.string().optional(),\n entries: z.array(UnbuildEntrySchema).optional(),\n outDir: z.string().optional(),\n clean: z.boolean().optional(),\n declaration: UnbuildDeclarationSchema.optional(),\n sourcemap: z.boolean().optional(),\n stub: z.boolean().optional(),\n watch: z.boolean().optional(),\n parallel: z.boolean().optional(),\n externals: z.array(z.union([z.string(), z.instanceof(RegExp)])).optional(),\n alias: z.record(z.string(), z.string()).optional(),\n replace: z.record(z.string(), z.string()).optional(),\n failOnWarn: z.boolean().optional(),\n rollup: z\n .object({\n emitCJS: z.boolean().optional(),\n cjsBridge: z.boolean().optional(),\n preserveDynamicImports: z.boolean().optional(),\n inlineDependencies: z\n .union([z.boolean(), z.array(z.union([z.string(), z.instanceof(RegExp)]))])\n .optional(),\n })\n .optional(),\n});\n\n/**\n * Validate a tsup configuration\n * @param config - Configuration to validate\n * @returns Validation result\n */\nexport function validateTsupConfig(config: unknown) {\n return TsupConfigSchema.safeParse(config);\n}\n\n/**\n * Validate an unbuild configuration\n * @param config - Configuration to validate\n * @returns Validation result\n */\nexport function validateUnbuildConfig(config: unknown) {\n return UnbuildConfigSchema.safeParse(config);\n}\n\n/**\n * Validate a configuration based on bundler type\n * @param config - Configuration to validate\n * @param bundler - Bundler type\n * @returns Validation result\n */\nexport function validateConfig(config: unknown, bundler: \"tsup\" | \"unbuild\") {\n if (bundler === \"tsup\") {\n return validateTsupConfig(config);\n }\n return validateUnbuildConfig(config);\n}\n","import { loadConfig, discoverConfigFile } from \"../utils/config-loader\";\nimport { validateConfig } from \"../utils/validators\";\nimport { logger, logSuccess, logError, colors } from \"../utils/logger\";\n\ninterface ValidateCommandOptions {\n config?: string;\n bundler?: \"tsup\" | \"unbuild\";\n}\n\n/**\n * Validate command handler - Validate build configuration\n */\nexport async function validateCommand(\n options: ValidateCommandOptions,\n): Promise<void> {\n try {\n logger.start(\"Validating configuration...\");\n\n // Discover config file\n const configPath = await discoverConfigFile(\n process.cwd(),\n options.config,\n );\n\n if (!configPath) {\n logError(\"No configuration file found\");\n logger.info(\"Run 'rad-build init' to create a configuration file\");\n process.exit(1);\n }\n\n logger.info(`Found config: ${colors.file(configPath)}`);\n\n // Load config\n const { config, bundler } = await loadConfig({\n ...(options.config && { configPath: options.config }),\n bundler: options.bundler ?? \"auto\",\n });\n\n logger.info(`Detected bundler: ${colors.bundler(bundler)}`);\n\n // Validate config\n const result = validateConfig(config, bundler);\n\n if (result.success) {\n logSuccess(\"✓ Configuration is valid!\");\n\n // Show some config details\n logger.info(\"\\nConfiguration summary:\");\n if (bundler === \"tsup\") {\n const tsupConfig = config as any;\n logger.info(` Entry: ${JSON.stringify(tsupConfig.entry ?? [\"src/index.ts\"])}`);\n logger.info(` Format: ${JSON.stringify(tsupConfig.format ?? [\"esm\", \"cjs\"])}`);\n logger.info(` DTS: ${tsupConfig.dts !== false ? \"enabled\" : \"disabled\"}`);\n logger.info(\n ` Sourcemap: ${tsupConfig.sourcemap !== false ? \"enabled\" : \"disabled\"}`,\n );\n } else {\n const unbuildConfig = config as any;\n logger.info(\n ` Entries: ${JSON.stringify(unbuildConfig.entries ?? [\"src/index\"])}`,\n );\n logger.info(\n ` Declaration: ${unbuildConfig.declaration !== false ? \"enabled\" : \"disabled\"}`,\n );\n logger.info(\n ` CJS: ${unbuildConfig.rollup?.emitCJS ? \"enabled\" : \"disabled\"}`,\n );\n }\n } else {\n logError(\"✗ Configuration validation failed\");\n\n // Show validation errors\n if (result.error) {\n logger.error(\"\\nValidation errors:\");\n result.error.errors.forEach((err) => {\n logger.error(` ${colors.error(\"•\")} ${err.path.join(\".\")}: ${err.message}`);\n });\n }\n\n process.exit(1);\n }\n } catch (error) {\n logError(\"Validation failed\", error as Error);\n process.exit(1);\n }\n}\n","import { loadConfig, discoverConfigFile, getPackageJson } from \"../utils/config-loader\";\nimport { logger, logBox, colors } from \"../utils/logger\";\n\ninterface InfoCommandOptions {\n config?: string;\n}\n\n/**\n * Info command handler - Show build configuration and environment info\n */\nexport async function infoCommand(options: InfoCommandOptions): Promise<void> {\n try {\n logger.start(\"Gathering project information...\\n\");\n\n // Get package.json\n const pkg = await getPackageJson();\n const projectName = pkg?.name ?? \"unknown\";\n const projectVersion = pkg?.version ?? \"0.0.0\";\n\n // Discover config file\n const configPath = await discoverConfigFile(\n process.cwd(),\n options.config,\n );\n\n // Load config if exists\n let bundler: \"tsup\" | \"unbuild\" | \"none\" = \"none\";\n let config: any = {};\n\n if (configPath) {\n const loaded = await loadConfig({\n ...(options.config && { configPath: options.config }),\n bundler: \"auto\",\n });\n bundler = loaded.bundler;\n config = loaded.config;\n }\n\n // Display project info\n logBox(\"Project Information\", [\n `Name: ${colors.primary(projectName)}`,\n `Version: ${colors.primary(projectVersion)}`,\n `Config: ${configPath ? colors.file(configPath) : colors.dim(\"not found\")}`,\n `Bundler: ${bundler !== \"none\" ? colors.bundler(bundler) : colors.dim(\"not configured\")}`,\n ]);\n\n // Display build configuration\n if (bundler !== \"none\") {\n console.log(\"\\n\" + colors.bold(\"Build Configuration:\"));\n\n if (bundler === \"tsup\") {\n const tsupConfig = config as any;\n console.log(colors.dim(\"├─\") + \" Entry: \" + JSON.stringify(tsupConfig.entry ?? [\"src/index.ts\"]));\n console.log(colors.dim(\"├─\") + \" Format: \" + JSON.stringify(tsupConfig.format ?? [\"esm\", \"cjs\"]));\n console.log(\n colors.dim(\"├─\") + \" Target: \" + (tsupConfig.target ?? \"node18\"),\n );\n console.log(\n colors.dim(\"├─\") + \" Platform: \" + (tsupConfig.platform ?? \"node\"),\n );\n console.log(\n colors.dim(\"├─\") + \" DTS: \" + (tsupConfig.dts !== false ? colors.success(\"✓\") : colors.dim(\"✗\")),\n );\n console.log(\n colors.dim(\"├─\") + \" Sourcemap: \" +\n (tsupConfig.sourcemap !== false ? colors.success(\"✓\") : colors.dim(\"✗\")),\n );\n console.log(\n colors.dim(\"├─\") + \" Minify: \" + (tsupConfig.minify ? colors.success(\"✓\") : colors.dim(\"✗\")),\n );\n console.log(\n colors.dim(\"└─\") + \" Clean: \" +\n (tsupConfig.clean !== false ? colors.success(\"✓\") : colors.dim(\"✗\")),\n );\n } else {\n const unbuildConfig = config as any;\n console.log(\n colors.dim(\"├─\") + \" Entries: \" +\n JSON.stringify(unbuildConfig.entries ?? [\"src/index\"]),\n );\n console.log(\n colors.dim(\"├─\") + \" Out Dir: \" + (unbuildConfig.outDir ?? \"dist\"),\n );\n console.log(\n colors.dim(\"├─\") + \" Declaration: \" +\n (unbuildConfig.declaration !== false\n ? colors.success(\"✓\")\n : colors.dim(\"✗\")),\n );\n console.log(\n colors.dim(\"├─\") + \" Emit CJS: \" +\n (unbuildConfig.rollup?.emitCJS\n ? colors.success(\"✓\")\n : colors.dim(\"✗\")),\n );\n console.log(\n colors.dim(\"├─\") + \" Sourcemap: \" +\n (unbuildConfig.sourcemap ? colors.success(\"✓\") : colors.dim(\"✗\")),\n );\n console.log(\n colors.dim(\"├─\") + \" Parallel: \" +\n (unbuildConfig.parallel !== false\n ? colors.success(\"✓\")\n : colors.dim(\"✗\")),\n );\n console.log(\n colors.dim(\"└─\") + \" Clean: \" +\n (unbuildConfig.clean !== false\n ? colors.success(\"✓\")\n : colors.dim(\"✗\")),\n );\n }\n }\n\n // Display package.json exports\n if (pkg?.exports) {\n console.log(\"\\n\" + colors.bold(\"Package Exports:\"));\n console.log(JSON.stringify(pkg.exports, null, 2));\n }\n\n // Display scripts\n if (pkg?.scripts) {\n const buildScripts = Object.entries(pkg.scripts).filter(\n ([key]) => key.includes(\"build\") || key.includes(\"watch\"),\n );\n\n if (buildScripts.length > 0) {\n console.log(\"\\n\" + colors.bold(\"Build Scripts:\"));\n buildScripts.forEach(([name, script]) => {\n console.log(` ${colors.command(name.padEnd(20))} ${colors.dim(script as string)}`);\n });\n }\n }\n\n // Show next steps if not configured\n if (bundler === \"none\") {\n console.log(\"\\n\" + colors.warning(\"⚠ No build configuration found\"));\n console.log(\n colors.info(\"\\nRun \") +\n colors.command(\"rad-build init\") +\n colors.info(\" to set up your project\"),\n );\n }\n } catch (error) {\n logger.error(\"Failed to gather information\", error as Error);\n process.exit(1);\n }\n}\n","import { buildCommand } from \"./build\";\nimport { logger } from \"../utils/logger\";\n\ninterface WatchCommandOptions {\n config?: string;\n preset?: string;\n bundler?: \"tsup\" | \"unbuild\";\n}\n\n/**\n * Watch command handler - Rebuild on file changes\n */\nexport async function watchCommand(options: WatchCommandOptions): Promise<void> {\n logger.info(\"Starting watch mode...\");\n\n // Delegate to build command with watch flag\n await buildCommand([], {\n ...options,\n watch: true,\n });\n}\n","#!/usr/bin/env node\n\nimport { cac } from \"cac\";\nimport { version } from \"../../package.json\";\nimport { logger, colors, logBox } from \"./utils/logger\";\n\n// Import commands (will be created next)\nimport { buildCommand } from \"./commands/build\";\nimport { initCommand} from \"./commands/init\";\nimport { validateCommand } from \"./commands/validate\";\nimport { infoCommand } from \"./commands/info\";\nimport { watchCommand } from \"./commands/watch\";\n\nconst cli = cac(\"rad-build\");\n\n// Global version and help\ncli.version(version).help();\n\n// Build command (default)\ncli\n .command(\"[...entries]\", \"Build your project\")\n .option(\"--config <path>\", \"Path to config file\")\n .option(\"--preset <name>\", \"Use a preset configuration\")\n .option(\"--bundler <bundler>\", \"Specify bundler: tsup or unbuild\")\n .option(\"--format <formats>\", \"Output formats (comma-separated)\")\n .option(\"--minify\", \"Minify output\")\n .option(\"--watch\", \"Watch mode\")\n .option(\"--sourcemap\", \"Generate sourcemaps\")\n .option(\"--dts\", \"Generate TypeScript declarations\")\n .option(\"--clean\", \"Clean output directory before build\")\n .action(buildCommand);\n\n// Init command\ncli\n .command(\"init\", \"Initialize build configuration\")\n .option(\"--bundler <bundler>\", \"Specify bundler: tsup or unbuild\")\n .option(\"--preset <name>\", \"Use a preset configuration\")\n .option(\"--force\", \"Overwrite existing config\")\n .action(initCommand);\n\n// Validate command\ncli\n .command(\"validate\", \"Validate build configuration\")\n .option(\"--config <path>\", \"Path to config file\")\n .option(\"--bundler <bundler>\", \"Specify bundler: tsup or unbuild\")\n .action(validateCommand);\n\n// Info command\ncli\n .command(\"info\", \"Show build configuration and environment info\")\n .option(\"--config <path>\", \"Path to config file\")\n .action(infoCommand);\n\n// Watch command\ncli\n .command(\"watch\", \"Watch and rebuild on file changes\")\n .option(\"--config <path>\", \"Path to config file\")\n .option(\"--preset <name>\", \"Use a preset configuration\")\n .option(\"--bundler <bundler>\", \"Specify bundler: tsup or unbuild\")\n .action(watchCommand);\n\n// List presets command\ncli.command(\"list-presets\", \"List all available presets\").action(async () => {\n const { presetCategories } = await import(\"../presets\");\n\n logBox(\"Available Presets\", [\n \"\",\n ...Object.entries(presetCategories).flatMap(([category, presets]) => [\n colors.bold(category.toUpperCase()),\n ...Object.entries(presets).map(\n ([name, preset]) =>\n ` ${colors.primary(name.padEnd(25))} - ${colors.dim(preset.description)}`,\n ),\n \"\",\n ]),\n ]);\n});\n\n// Parse CLI arguments\ncli.parse();\n\n// Handle errors\nprocess.on(\"unhandledRejection\", (error) => {\n logger.error(\"Unhandled error:\", error as Error);\n process.exit(1);\n});\n"],"names":["preset"],"mappings":"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"}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Options } from 'tsup';
|
|
2
|
+
import { BuildConfig } from 'unbuild';
|
|
3
|
+
import { makeTsupConfig } from './tsup.config.mjs';
|
|
4
|
+
import { makeUnbuildConfig } from './unbuild.config.mjs';
|
|
5
|
+
export { PresetCategory, PresetCollection, PresetConfig, getPreset, getPresetsByBundler, listPresets, presetCategories, presets } from './presets/index.mjs';
|
|
6
|
+
|
|
7
|
+
type TsupBuildConfig = {
|
|
8
|
+
type: "tsup";
|
|
9
|
+
options?: Options;
|
|
10
|
+
};
|
|
11
|
+
type UnbuildBuildConfig = {
|
|
12
|
+
type: "unbuild";
|
|
13
|
+
options?: BuildConfig;
|
|
14
|
+
};
|
|
15
|
+
type BuildConfigInput = TsupBuildConfig | UnbuildBuildConfig;
|
|
16
|
+
/**
|
|
17
|
+
* Define a build configuration with automatic bundler detection.
|
|
18
|
+
*
|
|
19
|
+
* This function provides a type-safe way to define build configurations
|
|
20
|
+
* for either tsup or unbuild based on the `type` discriminator.
|
|
21
|
+
*
|
|
22
|
+
* @param config - Build configuration with type discriminator
|
|
23
|
+
* @returns Configuration object for the selected bundler
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* // For tsup
|
|
28
|
+
* export default defineBuildConfig({
|
|
29
|
+
* type: 'tsup',
|
|
30
|
+
* options: {
|
|
31
|
+
* entry: ['src/index.ts'],
|
|
32
|
+
* format: ['esm', 'cjs'],
|
|
33
|
+
* },
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* // For unbuild
|
|
37
|
+
* export default defineBuildConfig({
|
|
38
|
+
* type: 'unbuild',
|
|
39
|
+
* options: {
|
|
40
|
+
* entries: ['src/index'],
|
|
41
|
+
* },
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
declare function defineBuildConfig(config: TsupBuildConfig): ReturnType<typeof makeTsupConfig>;
|
|
46
|
+
declare function defineBuildConfig(config: UnbuildBuildConfig): ReturnType<typeof makeUnbuildConfig>;
|
|
47
|
+
|
|
48
|
+
export { defineBuildConfig, makeTsupConfig, makeUnbuildConfig };
|
|
49
|
+
export type { BuildConfigInput, TsupBuildConfig, UnbuildBuildConfig };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Options } from 'tsup';
|
|
2
|
+
import { BuildConfig } from 'unbuild';
|
|
3
|
+
import { makeTsupConfig } from './tsup.config.js';
|
|
4
|
+
import { makeUnbuildConfig } from './unbuild.config.js';
|
|
5
|
+
export { PresetCategory, PresetCollection, PresetConfig, getPreset, getPresetsByBundler, listPresets, presetCategories, presets } from './presets/index.js';
|
|
6
|
+
|
|
7
|
+
type TsupBuildConfig = {
|
|
8
|
+
type: "tsup";
|
|
9
|
+
options?: Options;
|
|
10
|
+
};
|
|
11
|
+
type UnbuildBuildConfig = {
|
|
12
|
+
type: "unbuild";
|
|
13
|
+
options?: BuildConfig;
|
|
14
|
+
};
|
|
15
|
+
type BuildConfigInput = TsupBuildConfig | UnbuildBuildConfig;
|
|
16
|
+
/**
|
|
17
|
+
* Define a build configuration with automatic bundler detection.
|
|
18
|
+
*
|
|
19
|
+
* This function provides a type-safe way to define build configurations
|
|
20
|
+
* for either tsup or unbuild based on the `type` discriminator.
|
|
21
|
+
*
|
|
22
|
+
* @param config - Build configuration with type discriminator
|
|
23
|
+
* @returns Configuration object for the selected bundler
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* // For tsup
|
|
28
|
+
* export default defineBuildConfig({
|
|
29
|
+
* type: 'tsup',
|
|
30
|
+
* options: {
|
|
31
|
+
* entry: ['src/index.ts'],
|
|
32
|
+
* format: ['esm', 'cjs'],
|
|
33
|
+
* },
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* // For unbuild
|
|
37
|
+
* export default defineBuildConfig({
|
|
38
|
+
* type: 'unbuild',
|
|
39
|
+
* options: {
|
|
40
|
+
* entries: ['src/index'],
|
|
41
|
+
* },
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
declare function defineBuildConfig(config: TsupBuildConfig): ReturnType<typeof makeTsupConfig>;
|
|
46
|
+
declare function defineBuildConfig(config: UnbuildBuildConfig): ReturnType<typeof makeUnbuildConfig>;
|
|
47
|
+
|
|
48
|
+
export { defineBuildConfig, makeTsupConfig, makeUnbuildConfig };
|
|
49
|
+
export type { BuildConfigInput, TsupBuildConfig, UnbuildBuildConfig };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { makeTsupConfig } from './tsup.config.mjs';
|
|
2
|
+
import { makeUnbuildConfig } from './unbuild.config.mjs';
|
|
3
|
+
export { getPreset, getPresetsByBundler, listPresets, presetCategories, presets } from './presets/index.mjs';
|
|
4
|
+
import 'tsup';
|
|
5
|
+
import 'unbuild';
|
|
6
|
+
|
|
7
|
+
function defineBuildConfig(config) {
|
|
8
|
+
if (config.type === "tsup") {
|
|
9
|
+
return makeTsupConfig(config.options ?? {});
|
|
10
|
+
}
|
|
11
|
+
return makeUnbuildConfig(config.options ?? {});
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { defineBuildConfig, makeTsupConfig, makeUnbuildConfig };
|
|
15
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import type { Options as TsupOptions } from \"tsup\";\nimport type { BuildConfig as UnbuildConfig } from \"unbuild\";\nimport { makeTsupConfig } from \"./tsup.config\";\nimport { makeUnbuildConfig } from \"./unbuild.config\";\n\n// Re-export config makers\nexport { makeTsupConfig } from \"./tsup.config\";\nexport { makeUnbuildConfig } from \"./unbuild.config\";\n\n// Re-export presets\nexport {\n presets,\n presetCategories,\n getPreset,\n listPresets,\n getPresetsByBundler,\n} from \"./presets\";\nexport type { PresetConfig, PresetCollection, PresetCategory } from \"./presets\";\n\n// Discriminated union types for type-safe config definition\nexport type TsupBuildConfig = {\n type: \"tsup\";\n options?: TsupOptions;\n};\n\nexport type UnbuildBuildConfig = {\n type: \"unbuild\";\n options?: UnbuildConfig;\n};\n\nexport type BuildConfigInput = TsupBuildConfig | UnbuildBuildConfig;\n\n/**\n * Define a build configuration with automatic bundler detection.\n *\n * This function provides a type-safe way to define build configurations\n * for either tsup or unbuild based on the `type` discriminator.\n *\n * @param config - Build configuration with type discriminator\n * @returns Configuration object for the selected bundler\n *\n * @example\n * ```ts\n * // For tsup\n * export default defineBuildConfig({\n * type: 'tsup',\n * options: {\n * entry: ['src/index.ts'],\n * format: ['esm', 'cjs'],\n * },\n * });\n *\n * // For unbuild\n * export default defineBuildConfig({\n * type: 'unbuild',\n * options: {\n * entries: ['src/index'],\n * },\n * });\n * ```\n */\nexport function defineBuildConfig(\n config: TsupBuildConfig,\n): ReturnType<typeof makeTsupConfig>;\nexport function defineBuildConfig(\n config: UnbuildBuildConfig,\n): ReturnType<typeof makeUnbuildConfig>;\nexport function defineBuildConfig(\n config: BuildConfigInput,\n): ReturnType<typeof makeTsupConfig> | ReturnType<typeof makeUnbuildConfig> {\n if (config.type === \"tsup\") {\n return makeTsupConfig(config.options ?? {});\n }\n return makeUnbuildConfig(config.options ?? {});\n}\n"],"names":[],"mappings":";;;;;;AAmEO,SAAS,kBACZ,MAAA,EACwE;AACxE,EAAA,IAAI,MAAA,CAAO,SAAS,MAAA,EAAQ;AACxB,IAAA,OAAO,cAAA,CAAe,MAAA,CAAO,OAAA,IAAW,EAAE,CAAA;AAAA,EAC9C;AACA,EAAA,OAAO,iBAAA,CAAkB,MAAA,CAAO,OAAA,IAAW,EAAE,CAAA;AACjD;;;;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Options } from 'tsup';
|
|
2
|
+
import { BuildConfig } from 'unbuild';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Preset configuration that can be used with either tsup or unbuild
|
|
6
|
+
*/
|
|
7
|
+
interface PresetConfig {
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
bundler: "tsup" | "unbuild" | "both";
|
|
11
|
+
tsup?: Partial<Options>;
|
|
12
|
+
unbuild?: Partial<BuildConfig>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Collection of available presets
|
|
16
|
+
*/
|
|
17
|
+
interface PresetCollection {
|
|
18
|
+
[key: string]: PresetConfig;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Preset categories for organization
|
|
22
|
+
*/
|
|
23
|
+
type PresetCategory = "library" | "cli" | "component" | "app";
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* All available presets organized by category
|
|
27
|
+
*/
|
|
28
|
+
declare const presets: PresetCollection;
|
|
29
|
+
/**
|
|
30
|
+
* Get a preset by name
|
|
31
|
+
* @param name - The preset name
|
|
32
|
+
* @returns The preset configuration or undefined if not found
|
|
33
|
+
*/
|
|
34
|
+
declare function getPreset(name: string): PresetConfig | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* List all available preset names
|
|
37
|
+
* @returns Array of preset names
|
|
38
|
+
*/
|
|
39
|
+
declare function listPresets(): string[];
|
|
40
|
+
/**
|
|
41
|
+
* Get presets by bundler type
|
|
42
|
+
* @param bundler - The bundler type to filter by
|
|
43
|
+
* @returns Presets that support the specified bundler
|
|
44
|
+
*/
|
|
45
|
+
declare function getPresetsByBundler(bundler: "tsup" | "unbuild"): PresetCollection;
|
|
46
|
+
/**
|
|
47
|
+
* Preset categories for easy filtering
|
|
48
|
+
*/
|
|
49
|
+
declare const presetCategories: {
|
|
50
|
+
library: PresetCollection;
|
|
51
|
+
cli: PresetCollection;
|
|
52
|
+
component: PresetCollection;
|
|
53
|
+
complete: PresetCollection;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export { getPreset, getPresetsByBundler, listPresets, presetCategories, presets };
|
|
57
|
+
export type { PresetCategory, PresetCollection, PresetConfig };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Options } from 'tsup';
|
|
2
|
+
import { BuildConfig } from 'unbuild';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Preset configuration that can be used with either tsup or unbuild
|
|
6
|
+
*/
|
|
7
|
+
interface PresetConfig {
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
bundler: "tsup" | "unbuild" | "both";
|
|
11
|
+
tsup?: Partial<Options>;
|
|
12
|
+
unbuild?: Partial<BuildConfig>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Collection of available presets
|
|
16
|
+
*/
|
|
17
|
+
interface PresetCollection {
|
|
18
|
+
[key: string]: PresetConfig;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Preset categories for organization
|
|
22
|
+
*/
|
|
23
|
+
type PresetCategory = "library" | "cli" | "component" | "app";
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* All available presets organized by category
|
|
27
|
+
*/
|
|
28
|
+
declare const presets: PresetCollection;
|
|
29
|
+
/**
|
|
30
|
+
* Get a preset by name
|
|
31
|
+
* @param name - The preset name
|
|
32
|
+
* @returns The preset configuration or undefined if not found
|
|
33
|
+
*/
|
|
34
|
+
declare function getPreset(name: string): PresetConfig | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* List all available preset names
|
|
37
|
+
* @returns Array of preset names
|
|
38
|
+
*/
|
|
39
|
+
declare function listPresets(): string[];
|
|
40
|
+
/**
|
|
41
|
+
* Get presets by bundler type
|
|
42
|
+
* @param bundler - The bundler type to filter by
|
|
43
|
+
* @returns Presets that support the specified bundler
|
|
44
|
+
*/
|
|
45
|
+
declare function getPresetsByBundler(bundler: "tsup" | "unbuild"): PresetCollection;
|
|
46
|
+
/**
|
|
47
|
+
* Preset categories for easy filtering
|
|
48
|
+
*/
|
|
49
|
+
declare const presetCategories: {
|
|
50
|
+
library: PresetCollection;
|
|
51
|
+
cli: PresetCollection;
|
|
52
|
+
component: PresetCollection;
|
|
53
|
+
complete: PresetCollection;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export { getPreset, getPresetsByBundler, listPresets, presetCategories, presets };
|
|
57
|
+
export type { PresetCategory, PresetCollection, PresetConfig };
|