sdin
Version:
JavaScript package builder.
153 lines (152 loc) • 6.31 kB
TypeScript
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<SdinApplicationModuleType, SdinApplicationModuleMode> {
/** 模块构建模式(默认: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<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>[];
/** 开发模式下,启用日志(默认:不启用) */
devLog?: boolean;
/** 开发模式下,在页面标题上显示表情符号(默认:⚡) */
devEmoji?: string;
/** 开发环境下,服务器的端口号(默认:8080) */
devPort?: number;
/** 开发环境下,服务器的代理设置 <https://github.com/edorivai/koa-proxy> */
devProxies?: OrNil<ProxyOptions>[];
/** 页面列表 */
pages: OrNil<SdinApplicationPageParams>[];
/** 根页面名称(默认:index) */
index?: string;
/** 错误页面名称(默认:error) */
error?: string;
/** 页面元信息标签列表 */
metas?: OrNil<SdinApplicationPageElement>[];
/** 页面样式标签列表 */
links?: OrNil<SdinApplicationPageElement>[];
/** 页面样式标签列表 */
styles?: OrNil<SdinApplicationPageElement>[];
/** 页面脚本标签列表 */
scripts?: OrNil<SdinApplicationPageElement>[];
/** 页面骨架渲染器 */
skeleton?: SdinApplicationPageSkeleton;
}
/**
* Sdin 应用模块配置
*/
export declare class SdinApplicationModule extends SdinAbstractModule<SdinApplicationModuleType, SdinApplicationModuleMode, SdinApplicationModuleParams, SdinApplicationModuleDatas> {
/** 模块标题 */
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<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 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<void>;
/**
* 获得模块网络路径下的绝对路径
*/
withPath(...pathSegments: string[]): string;
/**
* 设置环境标识
*/
setEnv(it: 'pro' | 'dev'): void;
}