///
import Analyzer from './analyzer';
import type { AppType, SubPackage } from './analyzer';
interface Plugin {
name?: string;
run: (this: Optimizer, config: T) => void;
}
declare type PluginConfig = string | [string, T] | Plugin | [Plugin, T];
export interface OptimizerConfig {
output?: string;
removeUselessFile?: boolean;
uselessExculde?: string[];
renameFile?: boolean;
renameExculde?: string[];
renamedFilesMap?: string;
renameComponent?: boolean;
includesSubPackage?: boolean;
removeUnusedComponent?: boolean;
renamedComponentsMap?: string;
minifyJs?: boolean;
autoReplace?: boolean;
placeholders?: Record;
mergeImport?: boolean;
minifyJson?: boolean;
minifyXml?: boolean;
minifyCss?: boolean;
minifyXs?: boolean;
plugins?: PluginConfig[];
}
export default class Optimizer extends Analyzer {
config: OptimizerConfig;
constructor(cwd: string, type: AppType, config?: OptimizerConfig);
run(write?: boolean): Promise>;
/**
* 移除文件
*/
remove_files(files: string[]): void;
/**
* 获取所有可以重命名的文件
*
* @remarks
* 仅处理主包的文件
*
* 1. 不重命名 `app.js` `app.json` 等
* 2. 页面路由的四个文件不重命名
* 3. custom-tab-bar 文件夹下四个文件不重命名
*
*/
private get_renamable_files;
/**
* 移动主包文件到子包的 _ 目录或者重命名主包文件
* @param files
* @param key
*/
private move_files;
/**
* 处理 组件 自动设置placeholder
*/
autoReplace(): void;
get_renamable_files_of_sub_package(sub_package: SubPackage): string[];
write(): Promise;
protected optimize_js(file: string): void;
private optimize_xs;
private remove_useless_component;
private rename_component;
protected rename_tag(file: string, old_new_map: Record): void;
protected optimize_css(file: string): Promise;
protected optimize_xml(file: string): void;
protected optimize_json(file: string): void;
/**
* 变更`import` `require` `export .. from`的引用路径
* @param file - 原始文件
* @param old_new_map - 新旧文件名Map
*/
private convert_js;
/**
* 变更`require`的引用路径
* @param file - 原始文件
* @param old_new_map - 新旧文件名Map
*/
private convert_xs;
/**
* 修改 xml 的引用路径
* @param file - 原始文件
* @param old_new_map - 新旧文件名Map
*/
private convert_xml;
/**
* 替换 `@import` 的引用路径
* @param file - 原始文件
* @param old_new_map - 新旧文件名Map
*/
private convert_css;
/**
*
* @param file
* @param old_new_map
*/
private convert_json;
}
export {};