webpackbar
Version:
Elegant ProgressBar and Profiler for Webpack and Rspack
118 lines (113 loc) • 2.91 kB
text/typescript
import webpack, { Stats } from 'webpack';
type ReporterContextFunc<T = any> = (context: WebpackBarProgressPlugin, opts: T) => void;
interface State {
start: [number, number] | null;
progress: number;
done: boolean;
message: string;
details: string[];
request: null | {
file: null | string;
loaders: string[];
};
hasErrors: boolean;
color: string;
name: string;
}
interface Reporter {
/**
* Called when (re)compile is started
*/
start?: ReporterContextFunc;
/**
* Called when a file changed on watch mode
*/
change?: ReporterContextFunc<{
shortPath: string;
}>;
/**
* Called after each progress update
*/
update?: ReporterContextFunc;
/**
* Called when compile finished
*/
done?: ReporterContextFunc<{
stats: Stats;
}>;
/**
* Called when build progress updated
*/
progress?: ReporterContextFunc;
/**
* Called when _all_ compiles finished
*/
allDone?: ReporterContextFunc;
beforeAllDone?: ReporterContextFunc;
afterAllDone?: ReporterContextFunc;
}
type ReporterOpts = {
reporter: Reporter | string;
options?: any;
};
type ReporterInput = string | [Reporter | string, any?] | ReporterOpts;
interface WebpackBarOptions {
/**
* Display name
* @default 'webpack'
*/
name?: string;
/**
* Color output of the progress bar
* @default 'green'
*/
color?: string;
/**
* Enable profiler
* @default false
*/
profile?: boolean;
/**
* Enable bars reporter
* Defaults to 'true' when not in CI or testing mod
* @default true
*/
fancy?: boolean;
/**
* Enable a simple log reporter (only start and end)
* Defaults to 'true' when running in minimal environments
* @default true
*/
basic?: boolean;
/**
* Register a custom reporter
*/
reporter?: ReporterInput;
/**
* Register an Array of your custom reporters.
* @default ['basic'] | ['fancy']
*/
reporters?: ReporterInput[];
}
declare class WebpackBar {
private options;
private reporters;
constructor(options?: WebpackBarOptions);
callReporters(fn: any, payload?: {}): void;
get hasRunning(): boolean;
get hasErrors(): boolean;
get statesArray(): any[];
get states(): {
[key: string]: State;
};
get state(): State;
_ensureState(): void;
apply(compiler: any): void;
updateProgress(percent?: number, message?: string, details?: any[]): void;
}
declare class WebpackBarProgressPlugin extends webpack.ProgressPlugin {
webpackbar: WebpackBar;
constructor(options?: WebpackBarOptions);
apply(compiler: any): void;
}
export { type Reporter as R, type State as S, WebpackBar as W, type WebpackBarOptions as a, WebpackBarProgressPlugin as b };