feat(tsbuild): Improve task logging and update dependencies
This commit is contained in:
		| @@ -3,6 +3,6 @@ | ||||
|  */ | ||||
| export const commitinfo = { | ||||
|   name: '@git.zone/tsbuild', | ||||
|   version: '2.5.2', | ||||
|   version: '2.6.0', | ||||
|   description: 'A tool for compiling TypeScript files using the latest nightly features, offering flexible APIs and a CLI for streamlined development.' | ||||
| } | ||||
|   | ||||
| @@ -41,6 +41,7 @@ export class TsBuild { | ||||
|   private fileNames: string[] = []; | ||||
|   private options: plugins.typescript.CompilerOptions; | ||||
|   private argvArg?: any; | ||||
|   private taskInfo?: any; | ||||
|  | ||||
|   /** | ||||
|    * Create a new TsBuild instance | ||||
| @@ -48,10 +49,12 @@ export class TsBuild { | ||||
|   constructor( | ||||
|     fileNames: string[] = [],  | ||||
|     customOptions: CompilerOptions = {},  | ||||
|     argvArg?: any | ||||
|     argvArg?: any, | ||||
|     taskInfo?: any | ||||
|   ) { | ||||
|     this.fileNames = fileNames; | ||||
|     this.argvArg = argvArg; | ||||
|     this.taskInfo = taskInfo; | ||||
|     this.options = this.mergeCompilerOptions(customOptions, argvArg); | ||||
|   } | ||||
|  | ||||
| @@ -320,7 +323,17 @@ export class TsBuild { | ||||
|       await plugins.smartdelay.delayFor(5000); | ||||
|     } | ||||
|      | ||||
|     console.log(`🔨 Compiling ${this.fileNames.length} files...`); | ||||
|     // Enhanced logging with task info | ||||
|     const startTime = Date.now(); | ||||
|     if (this.taskInfo) { | ||||
|       const { taskNumber, totalTasks, sourcePattern, destDir, fileCount } = this.taskInfo; | ||||
|       const relativeDestDir = destDir.replace(process.cwd(), '').replace(/^\//, ''); | ||||
|       console.log(`\n🔨 [${taskNumber}/${totalTasks}] Compiling ${fileCount} file${fileCount !== 1 ? 's' : ''} from ${sourcePattern}`); | ||||
|       console.log(`   📁 Output: ${relativeDestDir}`); | ||||
|     } else { | ||||
|       console.log(`🔨 Compiling ${this.fileNames.length} files...`); | ||||
|     } | ||||
|      | ||||
|     const done = plugins.smartpromise.defer<{ emittedFiles: any[], errorSummary: IErrorSummary }>(); | ||||
|     const program = this.createProgram(); | ||||
|      | ||||
| @@ -352,7 +365,15 @@ export class TsBuild { | ||||
|  | ||||
|     const exitCode = emitResult.emitSkipped ? 1 : 0; | ||||
|     if (exitCode === 0) { | ||||
|       console.log('\n✅ TypeScript emit succeeded!'); | ||||
|       const endTime = Date.now(); | ||||
|       const duration = endTime - startTime; | ||||
|        | ||||
|       if (this.taskInfo) { | ||||
|         const { taskNumber, totalTasks } = this.taskInfo; | ||||
|         console.log(`✅ [${taskNumber}/${totalTasks}] Task completed in ${duration}ms`); | ||||
|       } else { | ||||
|         console.log(`✅ TypeScript emit succeeded! (${duration}ms)`); | ||||
|       } | ||||
|        | ||||
|       // Get count of emitted files by type | ||||
|       const jsFiles = emitResult.emittedFiles?.filter(f => f.endsWith('.js')).length || 0; | ||||
| @@ -361,7 +382,7 @@ export class TsBuild { | ||||
|        | ||||
|       // If we have emitted files, show a summary | ||||
|       if (emitResult.emittedFiles && emitResult.emittedFiles.length > 0) { | ||||
|         console.log(`   Generated ${emitResult.emittedFiles.length} files: ${jsFiles} .js, ${dtsFiles} .d.ts, ${mapFiles} source maps`); | ||||
|         console.log(`   📄 Generated ${emitResult.emittedFiles.length} files: ${jsFiles} .js, ${dtsFiles} .d.ts, ${mapFiles} source maps`); | ||||
|       } | ||||
|        | ||||
|       done.resolve({ emittedFiles: emitResult.emittedFiles || [], errorSummary: combinedErrorSummary }); | ||||
|   | ||||
| @@ -6,16 +6,28 @@ export type { CompilerOptions, ScriptTarget, ModuleKind }; | ||||
|  | ||||
| export * from './tsbuild.classes.tsbuild.js'; | ||||
|  | ||||
| /** | ||||
|  * Interface for task information | ||||
|  */ | ||||
| export interface ITaskInfo { | ||||
|   taskNumber: number; | ||||
|   totalTasks: number; | ||||
|   sourcePattern: string; | ||||
|   destDir: string; | ||||
|   fileCount: number; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * compile an array of absolute file paths with error tracking | ||||
|  */ | ||||
| export let compileFileArrayWithErrorTracking = async ( | ||||
|   fileStringArrayArg: string[], | ||||
|   compilerOptionsArg: CompilerOptions = {}, | ||||
|   argvArg?: any | ||||
|   argvArg?: any, | ||||
|   taskInfo?: ITaskInfo | ||||
| ): Promise<{ emittedFiles: any[], errorSummary: import('./tsbuild.classes.tsbuild.js').IErrorSummary }> => { | ||||
|   const { TsBuild } = await import('./tsbuild.classes.tsbuild.js'); | ||||
|   const tsBuild = new TsBuild(fileStringArrayArg, compilerOptionsArg, argvArg); | ||||
|   const tsBuild = new TsBuild(fileStringArrayArg, compilerOptionsArg, argvArg, taskInfo); | ||||
|   return tsBuild.compileWithErrorTracking(); | ||||
| }; | ||||
|  | ||||
| @@ -115,8 +127,11 @@ export let compileGlobStringObject = async ( | ||||
|   let compiledFiles: any[] = []; | ||||
|   const errorSummaries: import('./tsbuild.classes.tsbuild.js').IErrorSummary[] = []; | ||||
|    | ||||
|   const totalTasks = Object.keys(globStringObjectArg).length; | ||||
|   let currentTask = 0; | ||||
|    | ||||
|   // Log the compilation tasks in a nice format | ||||
|   console.log('\n👷 TypeScript Compilation Tasks:'); | ||||
|   console.log(`\n👷 TypeScript Compilation Tasks (${totalTasks} task${totalTasks !== 1 ? 's' : ''}):`); | ||||
|   Object.entries(globStringObjectArg).forEach(([source, dest]) => { | ||||
|     console.log(`  📂 ${source} → ${dest}`); | ||||
|   }); | ||||
| @@ -153,7 +168,16 @@ export let compileGlobStringObject = async ( | ||||
|       }; | ||||
|        | ||||
|       // Compile with error tracking | ||||
|       const result = await compileFileArrayWithErrorTracking(absoluteFilePathArray, updatedTsOptions, argvArg); | ||||
|       currentTask++; | ||||
|       const taskInfo = { | ||||
|         taskNumber: currentTask, | ||||
|         totalTasks, | ||||
|         sourcePattern: keyArg, | ||||
|         destDir: globStringObjectArg[keyArg], | ||||
|         fileCount: absoluteFilePathArray.length | ||||
|       }; | ||||
|        | ||||
|       const result = await compileFileArrayWithErrorTracking(absoluteFilePathArray, updatedTsOptions, argvArg, taskInfo); | ||||
|       compiledFiles = compiledFiles.concat(result.emittedFiles); | ||||
|       errorSummaries.push(result.errorSummary); | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user