import { RuleSetCondition, RuleSetRule } from 'webpack'; import { Options as ProxyOptions } from 'koa-proxy'; import { OrNil } from "../utils/declaration"; import { SdinProject } from './project'; import { SdinAbstractModule, SdinAbstractModuleDatas, SdinAbstractModuleParams } from './abstract-module'; import { SdinApplicationPage, SdinApplicationPageElement, SdinApplicationPageParams, SdinApplicationPageSkeleton } from './application-page'; export type SdinApplicationModuleType = 'application'; export type SdinApplicationModuleMode = 'csr'; export interface SdinApplicationModuleDatas extends SdinAbstractModuleDatas { SDIN_MODULE_TITLE: string | null; SDIN_MODULE_PATH: string; SDIN_MODULE_ASSETS_PATH: string; } /** * Sdin 应用模块配置选项 */ export interface SdinApplicationModuleParams extends SdinAbstractModuleParams { /** 模块构建模式(默认:csr) */ mode?: SdinApplicationModuleMode; /** 模块标题 */ title?: string; /** 模块源码目录(默认:src,相对项目根目录而言) */ src?: string; /** 模块目标目录(默认:tar/模块构建模式,相对项目根目录而言) */ tar?: string; /** 模块网络路径(默认:/模块名称/) */ path?: string; /** 模块素材源码目录(默认:pro/assets,相对项目根目录而言) */ astSrc?: string; /** 模块素材网络路径(默认:ast/,相对模块网络路径而言) */ astPath?: string; /** 压缩代码(默认:true) */ minify?: boolean; /** 丑化代码(默认:true) */ uglify?: boolean; /** 源代码映射(默认:压缩或丑化时启用) */ sourceMap?: boolean; /** 去除代码里使用到的外部模块 */ externals?: Record; /** SASS 模块(默认:开启) */ sassModule?: boolean; /** 混淆 CSS 类名(默认:开启) */ mixinClass?: boolean; /** babel 编译包含项 */ babelIncludes?: OrNil[]; /** babel 编译排除项 */ babelExcludes?: OrNil[]; /** 修改文本打包规则(仅允许修改部分值)*/ rawRule?: Partial; /** 修改字体打包规则(仅允许修改部分值)*/ fontRule?: Partial; /** 修改图片打包规则(仅允许修改部分值)*/ imageRule?: Partial; /** 修改音频打包规则(仅允许修改部分值)*/ audioRule?: Partial; /** 修改视频打包规则(仅允许修改部分值)*/ videoRule?: Partial; /** 添加打包规则(可以覆盖部分默认规则) */ rules?: OrNil[]; /** 开发模式下,启用日志(默认:不启用) */ devLog?: boolean; /** 开发模式下,在页面标题上显示表情符号(默认:⚡) */ devEmoji?: string; /** 开发环境下,服务器的端口号(默认:8080) */ devPort?: number; /** 开发环境下,服务器的代理设置 */ devProxies?: OrNil[]; /** 页面列表 */ pages: OrNil[]; /** 根页面名称(默认:index) */ index?: string; /** 错误页面名称(默认:error) */ error?: string; /** 页面元信息标签列表 */ metas?: OrNil[]; /** 页面样式标签列表 */ links?: OrNil[]; /** 页面样式标签列表 */ styles?: OrNil[]; /** 页面脚本标签列表 */ scripts?: OrNil[]; /** 页面骨架渲染器 */ skeleton?: SdinApplicationPageSkeleton; } /** * Sdin 应用模块配置 */ export declare class SdinApplicationModule extends SdinAbstractModule { /** 模块标题 */ readonly title: string | null; /** 模块网络路径 */ readonly path: string; /** 模块素材源码目录 */ readonly astSrc: string; /** 模块素材网络路径(相对模块网络路径而言) */ readonly astPath: string; /** 压缩代码 */ readonly minify: boolean; /** 丑化代码 */ readonly uglify: boolean; /** 源代码映射 */ readonly sourceMap: boolean; /** 去除代码里使用到的外部模块 */ readonly externals: Record; /** SASS 模块 */ readonly sassModule: boolean; /** 混淆 CSS 类名 */ readonly mixinClass: boolean; /** babel 编译包含项 */ readonly babelIncludes: RuleSetCondition[]; /** babel 编译排除项 */ readonly babelExcludes: RuleSetCondition[]; /** 修改文本打包规则 */ readonly rawRule: Partial; /** 修改字体打包规则 */ readonly fontRule: Partial; /** 修改图片打包规则 */ readonly imageRule: Partial; /** 修改音频打包规则 */ readonly audioRule: Partial; /** 修改视频打包规则 */ readonly videoRule: Partial; /** 添加打包规则 */ readonly rules: RuleSetRule[]; /** 开发模式下,启用日志 */ readonly devLog: boolean; /** 开发模式下,在页面标题上显示表情符号 */ readonly devEmoji: string; /** 开发模式下,服务器的端口号 */ readonly devPort: number; /** 开发模式下,服务器的代理设置 */ readonly devProxies: ProxyOptions[]; /** 数据宏定义 */ readonly datas: SdinApplicationModuleDatas; /** 页面列表 */ readonly pages: SdinApplicationPage[]; /** 根页面 */ readonly index: SdinApplicationPage | null; /** 错误页面 */ readonly error: SdinApplicationPage | null; constructor(project: SdinProject, params: SdinApplicationModuleParams); private createPages; validate(): Promise; /** * 获得模块网络路径下的绝对路径 */ withPath(...pathSegments: string[]): string; /** * 设置环境标识 */ setEnv(it: 'pro' | 'dev'): void; }