import { RuleSetCondition, RuleSetRule } from 'webpack'; import { OrNil } from "../utils/declaration"; import { SdinProject } from './project'; import { SdinAbstractModule, SdinAbstractModuleDatas, SdinAbstractModuleParams } from './abstract-module'; export type SdinIntegrationModuleType = 'integration'; export type SdinIntegrationModuleMode = 'cjs' | 'umd' | 'jsp' | 'glb'; export declare const GLOBAL_MODE_LIST: SdinIntegrationModuleMode[]; export interface SdinIntegrationModuleDatas extends SdinAbstractModuleDatas { } /** * Sdin 集成模块配置选项 */ export interface SdinIntegrationModuleParams extends SdinAbstractModuleParams { /** 模块构建模式(默认:umd) */ mode?: SdinIntegrationModuleMode; /** 模块源码目录(默认:src,相对项目根目录而言) */ src?: string; /** 模块目标目录(默认:tar/模块构建模式,相对项目根目录而言) */ tar?: string; /** 模块入口文件(默认:index.(ts|tsx|js|jsx),相对模块源码目录而言) */ index?: string; /** 模块捆绑包名(默认:index,用于指定生成的主文件名称) */ bundle?: string; /** 全局对象(指定要挂载的环境中的全局对象变量名) */ global?: string; /** 全局变量名(用于指定包的导出对象,在全局的名称,cjs、umd 模式有效) */ variable?: 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[]; } /** * Sdin 集成模块配置 */ export declare class SdinIntegrationModule extends SdinAbstractModule { /** 模块入口文件 */ readonly index: string; /** 模块捆绑包名 */ readonly bundle: string; /** 全局对象 */ readonly global: string | null; /** 全局变量名 */ readonly variable: 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 datas: SdinIntegrationModuleDatas; constructor(project: SdinProject, params: SdinIntegrationModuleParams); validate(): Promise; getTarIndex(): string; }