API 参考
插件 API
ApiPlugin 接口与生命周期钩子
关于插件系统概述和内置插件列表,请参阅 插件系统。
createPlugin
创建类型安全的插件工厂函数。
import { createPlugin } from "wormajs";
const myPlugin = createPlugin((options: { key: string }) => ({
name: "my-plugin",
beforeCodeGenerate({ data }) {
data.config.customKey = options.key;
},
}));
// 使用
defineConfig({
generator: [
{
plugins: [myPlugin({ key: "value" })],
},
],
});ApiPlugin
type MaybePromise<T> = T | Promise<T>;
type ReportProgress = (progress: number, message?: string) => void;
interface ApiPlugin {
name?: string;
/** ① 配置阶段:可修改 config */
config?: (
params: ConfigHookParams,
) => MaybePromise<GeneratorConfig | undefined | null | void>;
/** ② OpenAPI 解析前 */
beforeOpenapiParse?: (params: BeforeOpenapiParseHookParams) => void;
/** ③ OpenAPI 解析后:可修改 document */
openapiParsed?: (
params: OpenapiParsedHookParams,
) => MaybePromise<OpenAPIDocument | undefined | null | void>;
/** ④ 获取模板路径 */
getTemplate?: (
params: GetTemplateHookParams,
) => MaybePromise<TemplateConfigResult | undefined | null | void>;
/** ⑤ 渲染前:注入/修改 templateData */
beforeCodeGenerate?: (
params: BeforeCodeGenerateHookParams,
) => MaybePromise<void>;
/** ⑥ 每个文件写盘前:可修改单个文件内容 */
beforeFileWrite?: (params: BeforeFileWriteHookParams) => MaybePromise<string>;
/** ⑦ 所有文件写盘完成后 */
codeGenerated?: (params: CodeGeneratedHookParams) => MaybePromise<void>;
/** ⑧ Handlebars 实例创建时:注册自定义 helper 或 partial */
onHandlebarsCreated?: (
params: OnHandlebarsCreatedHookParams,
) => MaybePromise<void>;
}钩子参数类型
ConfigHookParams
interface ConfigHookParams {
config: GeneratorConfig;
projectPath: string;
reportProgress: ReportProgress;
}BeforeOpenapiParseHookParams
interface BeforeOpenapiParseHookParams {
config: Readonly<GeneratorConfig>;
projectPath: string;
reportProgress: ReportProgress;
}OpenapiParsedHookParams
interface OpenapiParsedHookParams {
config: Readonly<GeneratorConfig>;
document: OpenAPIDocument;
projectPath: string;
reportProgress: ReportProgress;
}GetTemplateHookParams
interface GetTemplateHookParams {
config: Readonly<GeneratorConfig>;
projectPath: string;
reportProgress: ReportProgress;
}返回 TemplateConfigResult:
interface TemplateConfigResult {
/** 模板路径(相对或绝对,相对是相对于 process.cwd()) */
path: string;
}BeforeCodeGenerateHookParams
interface BeforeCodeGenerateHookParams {
config: Readonly<GeneratorConfig>;
data: TemplateData;
projectPath: string;
reportProgress: ReportProgress;
}直接修改 params.data 注入数据,不再返回值。
BeforeFileWriteHookParams
interface BeforeFileWriteHookParams {
config: Readonly<GeneratorConfig>;
data: TemplateData;
filePath: string;
content: string;
projectPath: string;
reportProgress: ReportProgress;
/** 模板文件元数据 */
meta: {
templateType?: "tag" | "api";
tag?: string;
api?: string;
};
}返回修改后的文件内容字符串。
CodeGeneratedHookParams
interface CodeGeneratedHookParams {
config: Readonly<GeneratorConfig>;
data: TemplateData;
/** 所有生成文件的路径(不含内容) */
filePaths: string[];
/** 绝对输出目录 */
outputDir: string;
projectPath: string;
error?: Error;
reportProgress: ReportProgress;
}OnHandlebarsCreatedHookParams
interface OnHandlebarsCreatedHookParams {
hbs: typeof import("handlebars");
config: Readonly<GeneratorConfig>;
projectPath: string;
reportProgress: ReportProgress;
}