Add a configurable Markdown link serialization policy
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 68/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 活跃
- 技术栈
- react, typescript
- 领域
- frontend
调研方向
Start at the public blocksToMarkdownLossy entry point and trace into the lower-level Markdown exporter’s link serialization. Verify how URL-only links and separately labelled links are currently emitted. Done means an opt-in explicit style is supported, auto preserves existing output, and both link cases have coverage.
由索引模型根据 Issue 内容生成。
描述
What’s broken?
The Markdown exporter does not provide a public option to control how links are serialized.
When a URL-only link is created in BlockNote, blocksToMarkdownLossy may serialize it as a bare URL:
https://example.com
This is valid in GFM, but it loses the explicit distinction between ordinary text and a Markdown link. It also makes it difficult for applications to enforce a consistent Markdown export policy.
What did you expect to happen?
Applications should be able to choose whether links are serialized as:
https://example.com
or explicitly as:
[https://example.com](https://example.com)
For links with a separate label, the explicit format should remain:
[Documentation](https://example.com)
The default behavior should remain unchanged for backward compatibility.
Steps to reproduce
- Create a BlockNote editor.
- Insert a link where the displayed text is the same as the URL.
- Export the document with
blocksToMarkdownLossy. - Observe that the result may contain a bare URL instead of explicit Markdown link syntax.
Example:
const markdown = editor.blocksToMarkdownLossy(editor.document);
console.log(markdown);
Observed output:
https://example.com
Desired opt-in output:
[https://example.com](https://example.com)
BlockNote version
v0.54.0
Environment
React application, macOS
Proposed API
One possible API would be an export option:
editor.blocksToMarkdownLossy(editor.document, {
linkStyle: "explicit",
});
Possible values:
type MarkdownLinkStyle = "auto" | "explicit";
Where:
"auto"preserves the current behavior."explicit"always emits[label](url)for links.- Links with different labels continue to emit
[label](url).
The option could be exposed through the lower-level Markdown exporter API as well.
Additional context
We initially implemented an application-level HTML-to-Markdown serializer only to change this link behavior. However, that requires duplicating BlockNote’s complete Markdown serialization logic and creates compatibility and maintenance risks when BlockNote changes its exporter.
A public link serialization option or hook would allow applications to customize this behavior without forking the whole serializer.
Contribution
I’d be interested in contributing a fix for this issue.
- 主要语言
- TypeScript
- 星标
- 10.2k
- 派生
- 772
- 平均合并
- 6 天 21 小时
- 30 天内合并 PR
- 26
环境准备
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
TypeCellOS/BlockNote 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 82/100
TypeCellOS/BlockNote#2949 · 1 条评论 ·
维护者通常 1 天内回复
-
a11y
难度 2/5 1-3 小时 新手友好度 68/100
TypeCellOS/BlockNote#2855 ·
维护者通常 1 天内回复
-
a11y
难度 2/5 1-3 小时 新手友好度 62/100
TypeCellOS/BlockNote#2829 · 1 条评论 ·
维护者通常 1 天内回复
-
a11y
难度 2/5 1-3 小时 新手友好度 72/100
TypeCellOS/BlockNote#2824 ·
维护者通常 1 天内回复
-
a11y
难度 2/5 1-3 小时 新手友好度 68/100
TypeCellOS/BlockNote#2811 ·
维护者通常 1 天内回复
查看 TypeCellOS/BlockNote 的全部 Issue
相似的 Issue
-
check:passed streams:add
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 88/100
Fission-AI/OpenSpec#1986 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
nestjs/docs.nestjs.com#3554 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 74/100
publicodes/publicodes#868 ·
-
namespace operations
难度 1/5 1 小时以内 新手友好度 78/100
EclipseFdn/open-vsx.org#13488 ·
维护者通常 2 天内回复