sdin
Version:
JavaScript package builder.
103 lines (102 loc) • 4.38 kB
TypeScript
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<SdinIntegrationModuleType, SdinIntegrationModuleMode> {
/** 模块构建模式(默认: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<string, string>;
/** SASS 模块(默认:开启) */
sassModule?: boolean;
/** 混淆 CSS 类名(默认:开启) */
mixinClass?: boolean;
/** babel 编译包含项 */
babelIncludes?: OrNil<RuleSetCondition>[];
/** babel 编译排除项 */
babelExcludes?: OrNil<RuleSetCondition>[];
/** 修改文本打包规则(仅允许修改部分值)*/
rawRule?: Partial<RuleSetRule>;
/** 修改字体打包规则(仅允许修改部分值)*/
fontRule?: Partial<RuleSetRule>;
/** 修改图片打包规则(仅允许修改部分值)*/
imageRule?: Partial<RuleSetRule>;
/** 修改音频打包规则(仅允许修改部分值)*/
audioRule?: Partial<RuleSetRule>;
/** 修改视频打包规则(仅允许修改部分值)*/
videoRule?: Partial<RuleSetRule>;
/** 添加打包规则(可以覆盖部分默认规则) */
rules?: OrNil<RuleSetRule>[];
}
/**
* Sdin 集成模块配置
*/
export declare class SdinIntegrationModule extends SdinAbstractModule<SdinIntegrationModuleType, SdinIntegrationModuleMode, SdinIntegrationModuleParams, SdinIntegrationModuleDatas> {
/** 模块入口文件 */
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<string, string>;
/** SASS 模块 */
readonly sassModule: boolean;
/** 混淆 CSS 类名 */
readonly mixinClass: boolean;
/** babel 编译包含项 */
readonly babelIncludes: RuleSetCondition[];
/** babel 编译排除项 */
readonly babelExcludes: RuleSetCondition[];
/** 修改文本打包规则 */
readonly rawRule: Partial<RuleSetRule>;
/** 修改字体打包规则 */
readonly fontRule: Partial<RuleSetRule>;
/** 修改图片打包规则 */
readonly imageRule: Partial<RuleSetRule>;
/** 修改音频打包规则 */
readonly audioRule: Partial<RuleSetRule>;
/** 修改视频打包规则 */
readonly videoRule: Partial<RuleSetRule>;
/** 添加打包规则 */
readonly rules: RuleSetRule[];
/** 数据宏定义 */
readonly datas: SdinIntegrationModuleDatas;
constructor(project: SdinProject, params: SdinIntegrationModuleParams);
validate(): Promise<void>;
getTarIndex(): string;
}