Vad är typen på webpack-konfigurationsfunktionen när det gäller TypeScript?


Jag kan inte lista ut typen på webpack-konfigurationsfunktionen när konfigurationen är skriven i TypeScript.

För närvarande exporterar jag ett objekt vars typ är Configuration:

const config: Configuration = {
  mode: 'production',
  // ...
}
export default config;

vilket bör ändras till att exportera en funktion:

export default (...): ... => {
  return {
    mode: 'production'
    // ...
  }
}

men jag vet inte den korrekta typen av den funktionen och kan inte hitta den bland typdefinitionerna:

https://github.com/webpack/webpack/blob/main/types.d.ts

Några idéer?

Svar #1

Det verkar som att det inte finns någon väletablerad eller rekommenderad lösning för tillfället.

Under tiden gjorde jag så här.

webpack.types.ts:

import type { Configuration } from "webpack";
import type { Configuration as DevServerConfiguration } from "webpack-dev-server";

export interface WebpackConfiguration extends Configuration {
  devServer?: DevServerConfiguration;
}

type CLIValues = boolean | string;

type EnvValues = Record<string, CLIValues | Record<string, Env>>;

interface Env extends EnvValues {}

type Argv = Record<string, CLIValues>;

export interface WebpackConfigurationGenerator {
  (env?: Env, argv?: Argv): Configuration | Promise<Configuration>;
}
webpack.config.ts
import type { WebpackConfigurationGenerator } from "./webpack.types";

const generateConfig: WebpackConfigurationGenerator = (env, argv) => {
  // ...
};

export default generateConfig;

Relaterade artiklar