import { Configuration as WebpackConfiguration } from 'webpack' import { TerserPluginOptions } from 'terser-webpack-plugin' import { Configuration as DevServerConfiguration } from 'webpack-dev-server' import { Options as HtmlOptions } from 'html-webpack-plugin' import { Configuration as BuildConfiguration, CliOptions as BuildCliOptions } from 'electron-builder' import { Options as ESLintOptions } from 'eslint-webpack-plugin' export type WebpackConfiguration = WebpackConfiguration export type TerserPluginOptions = TerserPluginOptions export type DevServerConfiguration = DevServerConfiguration export type HtmlOptions = HtmlOptions export type BuildConfiguration = BuildConfiguration export type BuildCliOptions = BuildCliOptions export interface EnvVariables { [key: string]: string /** 项目名称 */ PROJECT_NAME?: string /** 项目标题 */ PROJECT_TITLE?: string /** api 请求地址 */ API_BASE?: string } export interface EnvOptions { /** publicPath */ publicPath: string /** 注入到 process.env 中的变量 */ variables: V } export interface LanboxConfig { /** 主进程入口文件 */ mainEntry?: WebpackConfiguration['entry'] /** 渲染进程入口文件 */ rendererEntry?: WebpackConfiguration['entry'] /** 编译输出目录 默认: dist */ dist: string /** 项目名称 */ projectName: string /** 项目标题 */ projectTitle: string /** 本地服务端口 默认: 18081 */ port: number /** 主进程 webpack 配置 */ mainWebpackConfig?: WebpackConfiguration /** 渲染进场 webpack 配置 */ rendererWebpackConfig?: WebpackConfiguration /** 路径别名 默认 */ alias: { [key: string]: string } /** 全局加载的文件 */ provide: { [key: string]: any } /** 公共环境变量 */ COMMON_ENV: V /** 环境变量 */ env: { [key: string]: EnvOptions } /** webpack.config 配置 */ configureWebpack?: (webpackConfig: WebpackConfiguration) => WebpackConfiguration devServerOptions: DevServerConfiguration terserOptions: TerserPluginOptions htmlOptions: HtmlOptions buildCliOptions: BuildCliOptions eslintOptions?: ESLintOptions } export type LanboxConfigPartial = Partial>