import ChainableWebpackConfig from 'webpack-chain' import { Configuration as WebpackOptions } from 'webpack' type PageEntry = string | string[] interface PageConfig { [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 } interface ProjectOptions { publicPath?: string outputDir?: string assetsDir?: string indexPath?: string filenameHashing?: boolean runtimeCompiler?: boolean transpileDependencies?: boolean | Array 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 } type ConfigFunction = () => ProjectOptions export { ProjectOptions, ConfigFunction, PageConfig }