markdown-to-jsx
从 markdown-to-jsx 迁移时,普通 Markdown 可以直接交给 Fluxdown。若内容里嵌入了自定义 React 标签,需要先安排好这些组件的呈现方式。
使用 Agent 协助
把下面的提示词交给能访问项目的 Agent:
替换组件
迁移前:
旧项目可能从
markdown-to-jsx默认入口导入,替换方式相同。
迁移后:
Fluxdown 会输出自己的容器,不提供 wrapper、forceWrapper 或 forceInline 的同名选项。需要文章语义和外层布局时,在组件外保留应用自己的容器;不要把块级 Markdown 渲染器直接放进段落等行内容器。
Next.js App Router 中,将 Fluxdown 放进文件顶部带有 'use client'; 的包装组件。数据获取仍可留在服务端页面;插件类和回调在客户端组件内定义,不通过服务端属性传递。
调整覆盖与样式
例如,统一调整一级标题和正文大小:
基础样式已随组件加载;需要手动加载时,在应用入口引入 fluxdown/styles.css。原有标题 ID、目录锚点、换行和 HTML 解析行为要用实际文章核对。脚注、缩进代码与 Setext 标题可以通过 build 开启。
处理嵌入的业务组件
overrides: { ProductCard } 配合 Markdown 中的 <ProductCard />,不会自动转换为 Fluxdown 插槽。Fluxdown 也不会执行字符串里的 JSX 表达式。
如果组件本来就来自结构化数据,可以在 Markdown 外继续渲染它。需要嵌入文本时,小范围替换使用 patches;自定义语法则用插件解析并交给自己的 Render / Slot 插件。需要保留的 HTML 标签与属性,按 Rehype 插件 配置允许列表。
接入流式内容
使用了 optimizeForStreaming 的项目,改为传入累积文本和请求状态:
两者对未完成语法的处理不同:Fluxdown 会尝试修复末尾并平滑展示,不是等待语法闭合后才显示。请求结束或中止时,将 pending 设为 false;效果可按流式内容调整。
确认所有自定义组件和 Markdown 入口都完成迁移后,再移除 markdown-to-jsx。