43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
import { colors } from "./logger.mjs";
|
|
|
|
/**
|
|
* Plugin to log rebuild information in watch mode
|
|
* @param {string} targetName - Name of the build target
|
|
* @param {Object} log - Logger instance
|
|
* @param {Object} options - Plugin options
|
|
* @param {boolean} options.logFirstBuild - Whether to log the first build completion (default: true)
|
|
*/
|
|
export function rebuildPlugin(targetName, log, options = {}) {
|
|
const { logFirstBuild = true } = options;
|
|
|
|
return {
|
|
name: "rebuild-logger",
|
|
setup(build) {
|
|
let startTime = 0;
|
|
let isFirstBuild = true;
|
|
|
|
build.onStart(() => {
|
|
startTime = performance.now();
|
|
if (!isFirstBuild) {
|
|
log.build(`${colors.gray}Rebuilding ${targetName}...${colors.reset}`);
|
|
}
|
|
});
|
|
|
|
build.onEnd((result) => {
|
|
const endTime = performance.now();
|
|
const duration = (endTime - startTime).toFixed(2);
|
|
|
|
if (result.errors.length > 0) {
|
|
log.error(`${colors.bright}${targetName}${colors.reset} - Build failed with ${result.errors.length} error(s) in ${duration}ms`);
|
|
} else if (!isFirstBuild) {
|
|
log.done(`${colors.bright}${targetName}${colors.reset} - Rebuilt in ${colors.gray}${duration}ms${colors.reset}`);
|
|
} else if (logFirstBuild) {
|
|
log.done(`${colors.bright}${targetName}${colors.reset} - Built in ${colors.gray}${duration}ms${colors.reset}`);
|
|
}
|
|
|
|
isFirstBuild = false;
|
|
});
|
|
},
|
|
};
|
|
}
|