@umijs/deps
Version:
[](https://packagephobia.now.sh/result?p=@umijs/deps)
389 lines (350 loc) • 12.6 kB
TypeScript
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;
}
}