API

类型

插件类型

export type Plugin = {
	/** 执行优先级 */
	priority?: number;
	/** 当 markdown-it 对象初始化时触发 */
	onMarkdownItInit?: (markdownIt: MarkdownIt) => void; 
	/**
	 * 渲染html文件时触发
	 * @param filepath markdown文件路径
	 * @param dest 输出文件路径
	 * @param ctx markdown上下文
	 * @param window jsdom window 对象
	 */
	onHtmlFileRender?: (filepath: string, dest: string, ctx: MarkdownContext, window: DOMWindow) => void;
	/** 当使用 build 命令完成全部渲染时调用 */
	onRenderFinish?: (file_info: (FileInfo & { rendered_html: string })[]) => void;
};

全部类型


/** 全局对象 */
declare global {
	var EWiki: {
		/** 配置文件 */
		config: Config & Record<string, any | undefined>;
		/** 全部已加载插件列表 */
		plugins: Plugin[];
		/** 模拟浏览器模块对象,文档:https://www.npmjs.com/package/jsdom  */
		JSDOM: typeof jsdom.JSDOM;
	};
}

/**
 * markdown 上下文,解析后的 markdown 文件会被转换为这个对象
 */
export interface MarkdownContext {
	/** 除了元数据之外的md文本 */
	content: string;
	metadata: {
		/** 输出绑定在页面上的元素,默认是 body ,可以根据template字段进行自定义 */
		mount?: string;
		/** 指定的模版文件,如果没有则使用配置中默认模版,如果配置也没设置,则为空白页面 */
		template?: string; 
		/** 指定的样式文件,如果没有则使用配置中默认样式 */
		styles?: string;
	} & Record<string, string | undefined>;
}

export type Plugin = {
	/** 执行优先级 */
	priority?: number;
	/** 当 markdown-it 对象初始化时触发 */
	onMarkdownItInit?: (markdownIt: MarkdownIt) => void; 
	/**
	 * 渲染html文件时触发
	 * @param filepath markdown文件路径
	 * @param dest 输出文件路径
	 * @param ctx markdown上下文
	 * @param window jsdom window 对象
	 */
	onHtmlFileRender?: (filepath: string, dest: string, ctx: MarkdownContext, window: DOMWindow) => void;
	/** 当使用 build 命令完成全部渲染时调用 */
	onRenderFinish?: (file_info: (FileInfo & { rendered_html: string })[]) => void;
};

/**
 * 文件信息
 */
export interface FileInfo {
	dirname: string;
	filename: string;
	filepath: string;
	dest: string;
	create_at: number;
	update_at: number;
	file_content: string;
	markdown_context: MarkdownContext;
	/**
	 * 在最后一步渲染文件后,会将渲染后的html内容保存在这个字段中
	 */
	rendered_html?: string;
}