UNPKG

@stacksjs/stx

Version:

A performant UI Framework. Powered by Bun.

199 lines 5.29 kB
/** * Create and run a production build */ export declare function build(config: ProductionBuildConfig): Promise<BuildResult>; /** * Create a production build instance */ export declare function createProductionBuild(config: ProductionBuildConfig): ProductionBuild; /** * Default production config */ export declare function defineConfig(config: ProductionBuildConfig): ProductionBuildConfig; /** * Production build configuration */ export declare interface ProductionBuildConfig { entry: string | string[] | Record<string, string> outDir: string publicPath?: string sourcemaps?: boolean | 'inline' | 'external' | 'hidden' minify?: boolean | MinifyOptions splitting?: boolean | SplittingOptions css?: CssOptions assets?: AssetOptions compression?: CompressionOptions analyze?: boolean | AnalyzeOptions target?: string | string[] define?: Record<string, string> external?: string[] plugins?: BuildPlugin[] } /** * Minification options */ export declare interface MinifyOptions { js?: boolean css?: boolean html?: boolean dropConsole?: boolean dropDebugger?: boolean mangle?: boolean } /** * Code splitting options */ export declare interface SplittingOptions { vendor?: boolean minSize?: number maxSize?: number chunkNames?: 'hash' | 'named' | 'deterministic' manualChunks?: Record<string, string[]> } /** * CSS options */ export declare interface CssOptions { extract?: boolean modules?: boolean | CssModulesOptions postcss?: boolean | object minify?: boolean filename?: string } /** * CSS modules options */ export declare interface CssModulesOptions { pattern?: string sourcemap?: boolean } /** * Asset options */ export declare interface AssetOptions { inlineLimit?: number filename?: string hash?: boolean hashLength?: number include?: string[] exclude?: string[] } /** * Compression options */ export declare interface CompressionOptions { gzip?: boolean brotli?: boolean threshold?: number deleteOriginal?: boolean } /** * Bundle analysis options */ export declare interface AnalyzeOptions { format?: 'html' | 'json' | 'text' filename?: string open?: boolean gzipSize?: boolean brotliSize?: boolean } /** * Build plugin interface */ export declare interface BuildPlugin { name: string setup?: (build: ProductionBuild) => void | Promise<void> buildStart?: () => void | Promise<void> transform?: (code: string, id: string) => string | Promise<string> | null buildEnd?: (result: BuildResult) => void | Promise<void> } /** * Build result */ export declare interface BuildResult { outputs: OutputFile[] duration: number totalSize: number gzipSize: number chunks: ChunkInfo[] assets: AssetInfo[] warnings: string[] errors: string[] } /** * Output file info */ export declare interface OutputFile { path: string type: 'js' | 'css' | 'html' | 'asset' | 'map' size: number gzipSize?: number hash?: string sources?: string[] isEntry?: boolean } /** * Chunk info */ export declare interface ChunkInfo { name: string file: string size: number modules: string[] isVendor?: boolean imports: string[] dynamicImports: string[] } /** * Asset info */ export declare interface AssetInfo { name: string file: string size: number source: string mimeType?: string } /** * Production Build orchestrator */ export declare class ProductionBuild { private config: ProductionBuildConfig; private startTime: number; private outputs: OutputFile[]; private chunks: ChunkInfo[]; private assets: AssetInfo[]; private warnings: string[]; private errors: string[]; private moduleGraph: Map<string, Set<string>>; private assetHashes: Map<string, string>; constructor(config: ProductionBuildConfig); build(): Promise<BuildResult>; private collectEntries(): Map<string, string>; private buildEntry(name: string, entryPath: string): Promise<void>; private resolveRelativePath(from: string, to: string): string; private processTemplate(content: string, filePath: string): Promise<string>; private processCss(content: string, filePath: string): Promise<string>; private processScript(content: string, filePath: string): Promise<string>; private extractCss(): Promise<void>; private processAssets(): Promise<void>; private performCodeSplitting(): Promise<void>; private minifyOutputs(): Promise<void>; private minifyJs(code: string): string; private minifyCss(css: string): string; private minifyHtml(html: string): string; private generateSourceMaps(): Promise<void>; private fingerprintAssets(): Promise<void>; private compressOutputs(): Promise<void>; private analyzeBundle(): Promise<void>; private generateAnalysisHtml(analysis: any): string; private generateAnalysisText(analysis: any): string; private runPluginHook(hook: string, arg?: any): Promise<void>; private runPluginTransform(code: string, id: string): Promise<string>; private generateHash(content: string | Buffer): string; private getOutputName(name: string, type: OutputFile['type'], hash: string): string; private formatSize(bytes: number): string; private ensureDir(dir: string): void; private walkDir(dir: string, callback: (path: string) => void): void; private getResult(): BuildResult; }