48 lines
1.9 KiB
TypeScript
48 lines
1.9 KiB
TypeScript
import { Configuration as WebpackConfiguration } from 'webpack';
|
||
type ResolveType = Required<WebpackConfiguration>['resolve'];
|
||
type AliasType = Required<ResolveType>['alias'];
|
||
type FallbackType = Required<ResolveType>['fallback'];
|
||
type OptimizationType = Required<WebpackConfiguration>['optimization'];
|
||
type SplitChunks = Required<OptimizationType>['splitChunks'];
|
||
type CacheGroups = Exclude<SplitChunks, false>["cacheGroups"];
|
||
type ExternalsType = Required<WebpackConfiguration>['externals'];
|
||
type ExternalsObjectType = Exclude<ExternalsType, RegExp | string | Function | Array<any>>;
|
||
type PluginType = Required<WebpackConfiguration>['plugins'];
|
||
type PluginInstanceType = PluginType extends Array<infer T> ? Exclude<T, false | number | string | null | undefined> : never;
|
||
type ModuleType = Required<WebpackConfiguration>['module'];
|
||
type RuleType = Required<ModuleType>['rules'];
|
||
type RuleObjectType = RuleType extends Array<infer T> ? Exclude<T, false | number | string | null | undefined> : never;
|
||
/**
|
||
* 编译环境配置
|
||
*/
|
||
export type CompilerConfiguration = {
|
||
webpack?: {
|
||
resolve?: {
|
||
alias?: AliasType;
|
||
fallback?: FallbackType;
|
||
};
|
||
extraOakModules?: (string | RegExp)[];
|
||
splitChunks: {
|
||
cacheGroups: CacheGroups;
|
||
};
|
||
externals?: ExternalsObjectType;
|
||
module: {
|
||
rules: RuleObjectType[];
|
||
};
|
||
plugins?: PluginInstanceType[];
|
||
};
|
||
};
|
||
/**
|
||
* 创建一个oak编译器配置
|
||
* @param raw 原始配置
|
||
* @returns 编译器配置
|
||
* 通过这个函数可以实现对配置文件的预处理,以及在项目中创建配置时提供类型参考
|
||
*/
|
||
export declare function CreateComilerConfig(raw: CompilerConfiguration): CompilerConfiguration;
|
||
export {};
|
||
/**
|
||
* 将compiler.js中的模块导出使用以下形式:
|
||
* module.exports = CreateComilerConfig({})
|
||
* 可以在编写时获得类型提示
|
||
*/
|