| import ChainableWebpackConfig from 'webpack-chain' | 
| import { WebpackOptions } from 'webpack/declarations/WebpackOptions' | 
|   | 
| type PageEntry = string | string[]; | 
|   | 
| interface PageConfig { | 
|   entry: PageEntry; | 
|   [key: string]: any; | 
| } | 
|   | 
| interface LoaderOptions { | 
|   css?: object; | 
|   sass?: object; | 
|   less?: object; | 
|   stylus?: object; | 
|   postcss?: object; | 
| } | 
|   | 
| // mini-css-extract-plugin options | 
| interface ExtractOptions { | 
|   filename?: string; | 
|   chunkFilename?: string; | 
| } | 
|   | 
| interface CSSOptions { | 
|   requireModuleExtension?: boolean; | 
|   extract?: boolean | ExtractOptions; | 
|   sourceMap?: boolean; | 
|   loaderOptions?: LoaderOptions; | 
| } | 
|   | 
| export interface ProjectOptions { | 
|   publicPath?: string; | 
|   outputDir?: string; | 
|   assetsDir?: string; | 
|   indexPath?: string; | 
|   filenameHashing?: boolean; | 
|   runtimeCompiler?: boolean; | 
|   transpileDependencies?: Array<string | RegExp>; | 
|   productionSourceMap?: boolean; | 
|   parallel?: boolean | number; | 
|   devServer?: object; | 
|   pages?: { | 
|     [key: string]: PageEntry | PageConfig; | 
|   }; | 
|   crossorigin?: '' | 'anonymous' | 'use-credentials'; | 
|   integrity?: boolean; | 
|   | 
|   css?: CSSOptions; | 
|   | 
|   chainWebpack?: (config: ChainableWebpackConfig) => void; | 
|   configureWebpack?: WebpackOptions | ((config: WebpackOptions) => (WebpackOptions | void)); | 
|   | 
|   lintOnSave?: boolean | 'default' | 'warning' | 'error'; | 
|   pwa?: object; | 
|   | 
|   pluginOptions?: object; | 
| } | 
|   | 
| export type ConfigFunction = () => ProjectOptions |