webpack-cli.d.ts 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. import { type Command as CommanderCommand, type CommandOptions as CommanderCommandOptions, type ParseOptions } from "commander";
  2. import { type Colors as WebpackColors, type Compiler, type Configuration, type MultiCompiler, type MultiConfiguration, type MultiStats, type Stats, type WebpackError, default as webpack } from "webpack";
  3. type RecordAny = Record<string, any>;
  4. type PackageManager = "pnpm" | "yarn" | "npm";
  5. type LogHandler = (value: any) => void;
  6. interface Logger {
  7. error: LogHandler;
  8. warn: LogHandler;
  9. info: LogHandler;
  10. success: LogHandler;
  11. log: LogHandler;
  12. raw: LogHandler;
  13. }
  14. interface Colors extends WebpackColors {
  15. isColorSupported: boolean;
  16. }
  17. type Context = RecordAny;
  18. interface Command extends CommanderCommand {
  19. pkg?: string;
  20. forHelp?: boolean;
  21. context: Context;
  22. }
  23. interface CommandOptions<A = void, O extends CommanderArgs = CommanderArgs, C extends Context = Context> extends CommanderCommandOptions {
  24. rawName: string;
  25. name: string;
  26. alias: string | string[];
  27. description?: string;
  28. usage?: string;
  29. dependencies?: string[];
  30. pkg?: string;
  31. preload?: () => Promise<C>;
  32. options?: CommandOption[] | ((command: Command & {
  33. context: C;
  34. }) => CommandOption[]) | ((command: Command & {
  35. context: C;
  36. }) => Promise<CommandOption[]>);
  37. action: A extends void ? (options: O, cmd: Command & {
  38. context: C;
  39. }) => void | Promise<void> : (args: A, options: O, cmd: Command & {
  40. context: C;
  41. }) => void | Promise<void>;
  42. }
  43. type CommanderArgs = Record<string, any>;
  44. type BasicPrimitive = string | boolean | number;
  45. type EnumValue = string | number | boolean | EnumValueObject | EnumValue[] | null;
  46. interface EnumValueObject {
  47. [key: string]: EnumValue;
  48. }
  49. interface ArgumentConfig {
  50. description?: string;
  51. negatedDescription?: string;
  52. path?: string;
  53. multiple?: boolean;
  54. type: "enum" | "string" | "path" | "number" | "boolean" | "RegExp" | "reset";
  55. values?: EnumValue[];
  56. }
  57. interface CommandOption {
  58. name: string;
  59. alias?: string;
  60. type?: (value: string, previous: Record<string, BasicPrimitive | object>) => Record<string, BasicPrimitive | object>;
  61. configs?: ArgumentConfig[];
  62. negative?: boolean;
  63. multiple?: boolean;
  64. valueName?: string;
  65. description?: string;
  66. describe?: string;
  67. negatedDescription?: string;
  68. defaultValue?: string;
  69. hidden?: boolean;
  70. negativeHidden?: boolean;
  71. }
  72. interface Env {
  73. WEBPACK_BUNDLE?: boolean;
  74. WEBPACK_BUILD?: boolean;
  75. WEBPACK_WATCH?: boolean;
  76. WEBPACK_SERVE?: boolean;
  77. }
  78. interface Argv extends RecordAny {
  79. env: Env;
  80. }
  81. interface ConfigurationsAndPaths {
  82. options: Configuration | MultiConfiguration;
  83. path: WeakMap<object, string[]>;
  84. }
  85. declare interface WebpackCallback {
  86. (err: null | Error, result?: Stats): void;
  87. (err: null | Error, result?: MultiStats): void;
  88. }
  89. type Schema = Parameters<(typeof webpack)["cli"]["getArguments"]>[0];
  90. interface KnownOptions {
  91. config?: string[];
  92. argv?: Argv;
  93. env?: Env;
  94. configNodeEnv?: string;
  95. watchOptionsStdin?: boolean;
  96. watch?: boolean;
  97. failOnWarnings?: boolean;
  98. isWatchingLikeCommand?: boolean;
  99. progress?: boolean | "profile";
  100. analyze?: boolean;
  101. json?: boolean;
  102. entry?: string | string[];
  103. merge?: boolean;
  104. configName?: string[];
  105. disableInterpret?: boolean;
  106. extends?: string[];
  107. webpack: typeof webpack;
  108. }
  109. type Options = KnownOptions & RecordAny;
  110. declare class WebpackCLI {
  111. #private;
  112. colors: Colors;
  113. logger: Logger;
  114. program: Command;
  115. constructor();
  116. isPromise<T>(value: Promise<T>): value is Promise<T>;
  117. isFunction(value: unknown): value is CallableFunction;
  118. capitalizeFirstLetter(str: string): string;
  119. toKebabCase(str: string): string;
  120. getLogger(): Logger;
  121. getDefaultPackageManager(): Promise<PackageManager | undefined>;
  122. isPackageInstalled(packageName: string): Promise<boolean>;
  123. installPackage(packageName: string, options?: {
  124. preMessage?: () => void;
  125. }): Promise<string>;
  126. makeCommand<A = void, O extends CommanderArgs = CommanderArgs, C extends Context = Context>(options: CommandOptions<A, O, C>): Promise<Command>;
  127. makeOption(command: Command, option: CommandOption): void;
  128. isMultipleConfiguration(config: Configuration | MultiConfiguration): config is MultiConfiguration;
  129. isMultipleCompiler(compiler: Compiler | MultiCompiler): compiler is MultiCompiler;
  130. isValidationError(error: unknown): error is WebpackError;
  131. schemaToOptions(webpackMod: typeof webpack, schema?: Schema, additionalOptions?: CommandOption[], override?: Partial<CommandOption>): CommandOption[];
  132. loadWebpack(): Promise<typeof webpack>;
  133. loadWebpackDevServer(): Promise<typeof import("webpack-dev-server")>;
  134. run(args: readonly string[], parseOptions: ParseOptions): Promise<void>;
  135. loadConfig(options: Options): Promise<ConfigurationsAndPaths>;
  136. createCompiler(options: Options, callback?: WebpackCallback): Promise<Compiler | MultiCompiler>;
  137. runWebpack(options: Options, isWatchCommand: boolean): Promise<void>;
  138. }
  139. export default WebpackCLI;