import { BaseAPI, BaseService, BaseServiceOptions, GeneratorAPI as IGeneratorAPI, Plugin, ProcessFileHandler, ProcessFileInfo } from '@mpflow/service-core'; import { Options as EjsOptions } from 'ejs'; import { AsyncSeriesHook, AsyncSeriesWaterfallHook } from 'tapable'; export declare class GeneratorAPI

= Generator

> extends BaseAPI implements IGeneratorAPI { constructor(id: string, service: S); /** * 拓展 package.json * @param toMerge */ extendPackage(toMerge: Record): void; renderDir(source: string, targetPath?: string, options?: { pattern?: string; additionalData?: Record; ejsOptions?: EjsOptions; }): void; renderFile(source: string, targetPath: string, options?: { additionalData?: Record; ejsOptions?: EjsOptions; }): void; processFile(handler: ProcessFileHandler): void; processFile(filter: string | string[], handler: ProcessFileHandler): void; } export interface GeneratorOptions extends BaseServiceOptions { depSources?: Record; files?: Record; } export declare class Generator

extends BaseService

{ /** * package.json 中依赖的来源 */ depSources: Record; /** * 生成文件任务队列 */ renderTaskQueue: (() => Promise>)[]; /** * */ hooks: { /** * 加载阶段,加载文件系统中的文件 */ load: AsyncSeriesHook; /** * 生成阶段 */ generate: AsyncSeriesHook, (() => Promise>)[], ProcessFileInfo[]>; /** * 处理阶段,根据已有文件进行对应处理 */ process: AsyncSeriesWaterfallHook; /** * 写入阶段,将新生成的或处理后的文件写入文件系统 */ write: AsyncSeriesHook, any, any>; }; constructor(context: string, { depSources, files: innerFiles, ...options }?: GeneratorOptions); /** * 触发 generator * @param installModules */ generate(installModules?: boolean): Promise; /** * 执行所有的插件 generator */ initPlugins(): Promise; extendPackage(toMerge: Record, id: string): void; /** * 将一个目录渲染到虚拟树中 */ renderDir(source: string, targetPath?: string, options?: { pattern?: string; additionalData?: Record; ejsOptions?: EjsOptions; }): void; /** * 将一个目录渲染到虚拟树中 */ renderFile(source: string, targetPath: string, options?: { additionalData?: Record; ejsOptions?: EjsOptions; }): void; /** * 注册文件处理回调 * @param handler */ processFile(id: string, handler: ProcessFileHandler): void; processFile(id: string, filter: string | string[], handler: ProcessFileHandler): void; }