如何让CKEditor 5输出HTML而非Markdown?
解决CKEditor 5在Next.js中输出HTML而非Markdown的问题
要让CKEditor 5输出HTML格式,核心是移除导致输出Markdown的插件配置——CKEditor 5默认就以HTML作为输出格式,只有引入了Markdown相关插件才会输出Markdown。具体操作如下:
1. 调整CKEditor自定义构建包
你当前使用的CKEditorCustomBuild应该包含了Markdown相关插件(比如MarkdownEditing、MarkdownOutput),需要重新生成不含这些插件的构建包:
- 若是通过CKEditor在线构建器生成的包,重新进入构建器,移除所有Markdown类插件,保留你需要的HTML格式化插件(如
Bold、Italic、Underline等),下载新构建包替换项目中的旧文件。 - 若是手动通过npm组装的构建,卸载
@ckeditor/ckeditor5-markdown-gfm这类Markdown依赖,只保留HTML相关插件(如@ckeditor/ckeditor5-basic-styles、@ckeditor/ckeditor5-editor-classic等)。
2. 验证代码逻辑
现有代码无需大幅修改,构建包调整后,editor.getData()会直接返回HTML:
<CKEditor // @ts-ignore editor={CKEditorCustomBuild} onChange={(event: any, editor: any) => { const data = editor.getData(); onChange(data); // 此时data即为HTML格式 }} />
格式映射补充说明
你示例中Markdown的_name_(斜体)期望输出<u>(下划线),默认CKEditor的Italic插件会输出<em>标签。如果需要这个格式映射:
- 安装
@ckeditor/ckeditor5-underline插件并在构建中启用。 - 可通过编辑器配置,将斜体的快捷键/按钮映射到下划线功能,或直接使用下划线按钮来生成
<u>标签。
内容的提问来源于stack exchange,提问作者enbermudas
相关产品推荐
相关产品推荐

