UNPKG

@umijs/deps

Version:

[![Install size](https://badgen.net/packagephobia/install/@umijs/deps)](https://packagephobia.now.sh/result?p=@umijs/deps)

389 lines (350 loc) 12.6 kB
import { Tapable } from '../../tapable'; import * as webpack from '../../webpack'; import * as https from 'https'; export = Config; declare namespace __Config { class Chained<Parent> { end(): Parent; } class TypedChainedMap<Parent, Value> extends Chained<Parent> { clear(): this; delete(key: string): this; has(key: string): boolean; get(key: string): Value; getOrCompute(key: string, compute: () => Value): Value; set(key: string, value: Value): this; merge(obj: { [key: string]: Value }): this; entries(): { [key: string]: Value }; values(): Value[]; when( condition: boolean, trueBrancher: (obj: this) => void, falseBrancher?: (obj: this) => void, ): this; } class ChainedMap<Parent> extends TypedChainedMap<Parent, any> {} class TypedChainedSet<Parent, Value> extends Chained<Parent> { add(value: Value): this; prepend(value: Value): this; clear(): this; delete(key: string): this; has(key: string): boolean; merge(arr: Value[]): this; values(): Value[]; when( condition: boolean, trueBrancher: (obj: this) => void, falseBrancher?: (obj: this) => void, ): this; } class ChainedSet<Parent> extends TypedChainedSet<Parent, any> {} } declare class Config extends __Config.ChainedMap<void> { devServer: Config.DevServer; entryPoints: Config.TypedChainedMap<Config, Config.EntryPoint>; module: Config.Module; node: Config.ChainedMap<this>; output: Config.Output; optimization: Config.Optimization; performance: Config.Performance; plugins: Config.Plugins<this, webpack.Plugin>; resolve: Config.Resolve; resolveLoader: Config.ResolveLoader; amd(value: { [moduleName: string]: boolean }): this; bail(value: boolean): this; cache(value: boolean | any): this; devtool(value: Config.DevTool): this; context(value: string): this; externals(value: webpack.ExternalsElement | webpack.ExternalsElement[]): this; loader(value: any): this; name(value: string): this; mode(value: 'none' | 'development' | 'production'): this; parallelism(value: number): this; profile(value: boolean): this; recordsPath(value: string): this; recordsInputPath(value: string): this; recordsOutputPath(value: string): this; stats(value: webpack.Options.Stats): this; target(value: string): this; watch(value: boolean): this; watchOptions(value: webpack.Options.WatchOptions): this; entry(name: string): Config.EntryPoint; plugin(name: string): Config.Plugin<this, webpack.Plugin>; toConfig(): webpack.Configuration; } declare namespace Config { class Chained<Parent> extends __Config.Chained<Parent> {} class TypedChainedMap<Parent, Value> extends __Config.TypedChainedMap< Parent, Value > {} class ChainedMap<Parent> extends __Config.TypedChainedMap<Parent, any> {} class TypedChainedSet<Parent, Value> extends __Config.TypedChainedSet< Parent, Value > {} class ChainedSet<Parent> extends __Config.TypedChainedSet<Parent, any> {} class Plugins< Parent, PluginType extends Tapable.Plugin = webpack.Plugin > extends TypedChainedMap<Parent, Plugin<Parent, PluginType>> {} class Plugin<Parent, PluginType extends Tapable.Plugin = webpack.Plugin> extends ChainedMap<Parent> implements Orderable { init<P extends PluginType | PluginClass<PluginType>>( value: ( plugin: P, args: P extends PluginClass ? ConstructorParameters<P> : any[], ) => PluginType, ): this; use<P extends string | PluginType | PluginClass<PluginType>>( plugin: P, args?: P extends PluginClass ? ConstructorParameters<P> : any[], ): this; tap<P extends PluginClass<PluginType>>( f: (args: ConstructorParameters<P>) => ConstructorParameters<P>, ): this; // Orderable before(name: string): this; after(name: string): this; } class Module extends ChainedMap<Config> { rules: TypedChainedMap<this, Rule>; rule(name: string): Rule; noParse( noParse: RegExp | RegExp[] | ((contentPath: string) => boolean), ): this; strictExportPresence(value: boolean): this; } class Output extends ChainedMap<Config> { auxiliaryComment(value: string | { [comment: string]: string }): this; chunkFilename(value: string): this; chunkLoadTimeout(value: number): this; crossOriginLoading(value: boolean | string): this; filename(value: string): this; library(value: string): this; libraryExport(value: string | string[]): this; libraryTarget(value: string): this; devtoolFallbackModuleFilenameTemplate(value: any): this; devtoolLineToLine(value: any): this; devtoolModuleFilenameTemplate(value: any): this; devtoolNamespace(value: string): this; globalObject(value: string): this; hashFunction(value: string): this; hashDigest(value: string): this; hashDigestLength(value: number): this; hashSalt(value: any): this; hotUpdateChunkFilename(value: string): this; hotUpdateFunction(value: any): this; hotUpdateMainFilename(value: string): this; jsonpFunction(value: string): this; path(value: string): this; pathinfo(value: boolean): this; publicPath(value: string): this; sourceMapFilename(value: string): this; sourcePrefix(value: string): this; strictModuleExceptionHandling(value: boolean): this; umdNamedDefine(value: boolean): this; futureEmitAssets(value: boolean): this; } class DevServer extends ChainedMap<Config> { allowedHosts: TypedChainedSet<this, string>; after( value: (app: any, server: any, compiler: webpack.Compiler) => void, ): this; before( value: (app: any, server: any, compiler: webpack.Compiler) => void, ): this; bonjour(value: boolean): this; clientLogLevel(value: 'none' | 'error' | 'warning' | 'info'): this; color(value: boolean): this; compress(value: boolean): this; contentBase(value: boolean | string | string[]): this; disableHostCheck(value: boolean): this; filename(value: string): this; headers(value: { [header: string]: string }): this; historyApiFallback(value: boolean | any): this; host(value: string): this; hot(value: boolean): this; hotOnly(value: boolean): this; http2(value: boolean): this; https(value: boolean | https.ServerOptions): this; index(value: string): this; info(value: boolean): this; inline(value: boolean): this; lazy(value: boolean): this; mimeTypes(value: Object): this; noInfo(value: boolean): this; open(value: boolean): this; openPage(value: string | string[]): this; overlay(value: boolean | { warnings?: boolean; errors?: boolean }): this; pfx(value: string): this; pfxPassphrase(value: string): this; port(value: number): this; progress(value: boolean): this; proxy(value: any): this; public(value: string): this; publicPath(publicPath: string): this; quiet(value: boolean): this; setup(value: (expressApp: any) => void): this; socket(value: string): this; sockHost(value: string): this; sockPath(value: string): this; sockPort(value: number): this; staticOptions(value: any): this; stats(value: webpack.Options.Stats): this; stdin(value: boolean): this; useLocalIp(value: boolean): this; watchContentBase(value: boolean): this; watchOptions(value: any): this; writeToDisk(value: boolean): this; } class Performance extends ChainedMap<Config> { hints(value: boolean | 'error' | 'warning'): this; maxEntrypointSize(value: number): this; maxAssetSize(value: number): this; assetFilter(value: (assetFilename: string) => boolean): this; } class EntryPoint extends TypedChainedSet<Config, string> {} class Resolve<T = Config> extends ChainedMap<T> { alias: TypedChainedMap<this, string>; aliasFields: TypedChainedSet<this, string>; descriptionFiles: TypedChainedSet<this, string>; extensions: TypedChainedSet<this, string>; mainFields: TypedChainedSet<this, string>; mainFiles: TypedChainedSet<this, string>; modules: TypedChainedSet<this, string>; plugins: TypedChainedMap<this, Plugin<this, webpack.ResolvePlugin>>; enforceExtension(value: boolean): this; enforceModuleExtension(value: boolean): this; unsafeCache(value: boolean | RegExp | RegExp[]): this; symlinks(value: boolean): this; cachePredicate( value: (data: { path: string; request: string }) => boolean, ): this; cacheWithContext(value: boolean): this; plugin(name: string): Plugin<this, webpack.ResolvePlugin>; } class ResolveLoader extends Resolve { moduleExtensions: ChainedSet<this>; packageMains: ChainedSet<this>; } class Rule<T = Module> extends ChainedMap<T> implements Orderable { rules: TypedChainedMap<this, Rule<Rule>>; oneOfs: TypedChainedMap<this, Rule<Rule>>; uses: TypedChainedMap<this, Use>; include: TypedChainedSet<this, webpack.Condition>; exclude: TypedChainedSet<this, webpack.Condition>; resolve: Resolve<Rule<T>>; parser(value: { [optName: string]: any }): this; test(value: webpack.Condition | webpack.Condition[]): this; type( value: | 'javascript/auto' | 'javascript/dynamic' | 'javascript/esm' | 'json' | 'webassembly/experimental', ): this; enforce(value: 'pre' | 'post'): this; use(name: string): Use<this>; rule(name: string): Rule<Rule>; oneOf(name: string): Rule<Rule>; pre(): this; post(): this; before(name: string): this; after(name: string): this; resourceQuery(value: webpack.Condition | webpack.Condition[]): this; } class Optimization extends ChainedMap<Config> { concatenateModules(value: boolean): this; flagIncludedChunks(value: boolean): this; mergeDuplicateChunks(value: boolean): this; minimize(value: boolean): this; minimizer(name: string): Config.Plugin<this, webpack.Plugin>; namedChunks(value: boolean): this; namedModules(value: boolean): this; nodeEnv(value: boolean | string): this; noEmitOnErrors(value: boolean): this; occurrenceOrder(value: boolean): this; portableRecords(value: boolean): this; providedExports(value: boolean): this; removeAvailableModules(value: boolean): this; removeEmptyChunks(value: boolean): this; runtimeChunk(value: boolean | 'single' | 'multiple' | RuntimeChunk): this; sideEffects(value: boolean): this; splitChunks(value: SplitChunksOptions): this; usedExports(value: boolean): this; } interface RuntimeChunk { name: string | RuntimeChunkFunction; } type RuntimeChunkFunction = (entryPoint: EntryPoint) => string; interface SplitChunksOptions { [name: string]: any; } interface LoaderOptions { [name: string]: any; } class Use<Parent = Rule> extends ChainedMap<Parent> implements Orderable { loader(value: string): this; options(value: LoaderOptions): this; tap(f: (options: LoaderOptions) => LoaderOptions): this; // Orderable before(name: string): this; after(name: string): this; } type DevTool = | 'eval' | 'inline-source-map' | 'cheap-eval-source-map' | 'cheap-source-map' | 'cheap-module-eval-source-map' | 'cheap-module-source-map' | 'eval-source-map' | 'source-map' | 'nosources-source-map' | 'hidden-source-map' | 'nosources-source-map' | '@eval' | '@inline-source-map' | '@cheap-eval-source-map' | '@cheap-source-map' | '@cheap-module-eval-source-map' | '@cheap-module-source-map' | '@eval-source-map' | '@source-map' | '@nosources-source-map' | '@hidden-source-map' | '@nosources-source-map' | '#eval' | '#inline-source-map' | '#cheap-eval-source-map' | '#cheap-source-map' | '#cheap-module-eval-source-map' | '#cheap-module-source-map' | '#eval-source-map' | '#source-map' | '#nosources-source-map' | '#hidden-source-map' | '#nosources-source-map' | '#@eval' | '#@inline-source-map' | '#@cheap-eval-source-map' | '#@cheap-source-map' | '#@cheap-module-eval-source-map' | '#@cheap-module-source-map' | '#@eval-source-map' | '#@source-map' | '#@nosources-source-map' | '#@hidden-source-map' | '#@nosources-source-map' | boolean; interface PluginClass<PluginType extends Tapable.Plugin = webpack.Plugin> { new (...opts: any[]): PluginType; } interface Orderable { before(name: string): this; after(name: string): this; } }