dabf15b19eead6e20b5736b522ce6ecd97ebbf517b0d472db71860ab93d49248a68b6641aa4cde7d743705b85e89f5e8b8fe68507938c9c6ff3eca6c50feb5 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import ChainableWebpackConfig from 'webpack-chain'
  2. import { WebpackOptions } from 'webpack/declarations/WebpackOptions'
  3. type PageEntry = string | string[];
  4. interface PageConfig {
  5. entry: PageEntry;
  6. [key: string]: any;
  7. }
  8. interface LoaderOptions {
  9. css?: object;
  10. sass?: object;
  11. less?: object;
  12. stylus?: object;
  13. postcss?: object;
  14. }
  15. // mini-css-extract-plugin options
  16. interface ExtractOptions {
  17. filename?: string;
  18. chunkFilename?: string;
  19. }
  20. interface CSSOptions {
  21. requireModuleExtension?: boolean;
  22. extract?: boolean | ExtractOptions;
  23. sourceMap?: boolean;
  24. loaderOptions?: LoaderOptions;
  25. }
  26. export interface ProjectOptions {
  27. publicPath?: string;
  28. outputDir?: string;
  29. assetsDir?: string;
  30. indexPath?: string;
  31. filenameHashing?: boolean;
  32. runtimeCompiler?: boolean;
  33. transpileDependencies?: Array<string | RegExp>;
  34. productionSourceMap?: boolean;
  35. parallel?: boolean | number;
  36. devServer?: object;
  37. pages?: {
  38. [key: string]: PageEntry | PageConfig;
  39. };
  40. crossorigin?: '' | 'anonymous' | 'use-credentials';
  41. integrity?: boolean;
  42. css?: CSSOptions;
  43. chainWebpack?: (config: ChainableWebpackConfig) => void;
  44. configureWebpack?: WebpackOptions | ((config: WebpackOptions) => (WebpackOptions | void));
  45. lintOnSave?: boolean | 'default' | 'warning' | 'error';
  46. pwa?: object;
  47. pluginOptions?: object;
  48. }
  49. export type ConfigFunction = () => ProjectOptions