UNPKG

3.01 kBTypeScriptView Raw
1// https://umijs.org/config/
2import { ExternalsElement, Condition } from 'webpack';
3import IWebpackChainConfig from 'webpack-chain';
4import { IChangeWebpackConfigFunc } from './index';
5
6export type IPlugin<T = any> = string | [string, T];
7
8export interface IRoute {
9 path?: string;
10 component?: string;
11 routes?: IRoute[];
12 Routes?: string[];
13 redirect?: string;
14 [key: string]: any;
15}
16
17export interface IExportStaticOpts {
18 htmlSuffix?: boolean;
19 dynamicRoot?: boolean;
20}
21
22// sorted by alphabet
23export interface IAFWebpackConfig {
24 alias?: object; // https://webpack.js.org/configuration/resolve/#resolve-alias
25 autoprefixer?: object; // https://github.com/ai/browserslist
26 babel?: object;
27 browserslist?: string[]; // https://github.com/ai/browserslist
28 chainConfig?: any; // https://github.com/mozilla-neutrino/webpack-chain
29 copy?: any[]; // https://github.com/webpack-contrib/copy-webpack-plugin
30 cssLoaderOptions?: any; // https://github.com/webpack-contrib/css-loader
31 cssModulesExcludes?: string[];
32 cssModulesWithAffix?: boolean;
33 cssnano?: object;
34 cssPublicPath?: string;
35 define?: object;
36 devServer?: object; // https://webpack.js.org/configuration/dev-server/#devserver
37 devtool?: string | false; // https://webpack.js.org/configuration/devtool/
38 disableCSSModules?: boolean;
39 disableCSSSourceMap?: boolean;
40 disableDynamicImport?: boolean;
41 entry?: any;
42 env?: object;
43 es5ImcompatibleVersions?: boolean;
44 externals?: ExternalsElement; // https://webpack.js.org/configuration/externals/
45 extraBabelIncludes?: Condition[]; // https://webpack.js.org/configuration/module/#condition
46 extraBabelPlugins?: any[];
47 extraBabelPresets?: any[];
48 extraPostCSSPlugins?: any[];
49 hash?: boolean;
50 ignoreMomentLocale?: boolean;
51 lessLoaderOptions?: any; // https://github.com/webpack-contrib/less-loader
52 manifest?: any; // https://www.npmjs.com/package/webpack-manifest-plugin
53 minimizer?: 'uglifyjs' | 'terserjs';
54 outputPath?: string;
55 proxy?: object | [object, Function]; // https://webpack.js.org/configuration/dev-server/#devserver-proxy
56 publicPath?: string;
57 sass?: object; // https://github.com/sass/node-sass#options
58 terserJSOptions?: object;
59 theme?: string | object;
60 tsConfigFile?: string;
61 typescript?: object;
62 uglifyJSOptions?: object;
63 urlLoaderExcludes?: Condition[];
64}
65
66interface IConfig extends IAFWebpackConfig {
67 // basic config
68 // sorted by alphabet
69 chainWebpack?: IChangeWebpackConfigFunc<
70 IWebpackChainConfig,
71 IAFWebpackConfig
72 >; // https://github.com/mozilla-neutrino/webpack-chain
73 context?: object;
74 disableRedirectHoist?: boolean;
75 exportStatic?: boolean | IExportStaticOpts;
76 outputPath?: string;
77 plugins?: IPlugin[];
78 routes?: IRoute[] | null;
79 runtimePublicPath?: boolean;
80 singular?: boolean;
81 treeShaking?: boolean;
82
83 // implemented in plugins
84 base?: string;
85 history?: 'browser' | 'hash' | 'memory';
86 mountElementId?: string;
87 targets?: {
88 [key: string]: number;
89 };
90}
91
92export default IConfig;