zenn-dev / zenn-editor

Convert markdown to html in Zenn format
MIT License
606 stars 76 forks source link

内部/外部リンクの判定基準をカスタム可能にする #453

Open mkobayashime opened 1 year ago

mkobayashime commented 1 year ago

課題

zenn-markdown-html package の markdownToHtml 関数において、リンク文字列には mdLinkAttributes plugin によって各種属性が付与されています その1つに rel="nofollow noopener noreferrer" があり、これは外部リンクに対して付与することが意図されているようです

ここで「外部」リンクか否かは現状 zenn.dev ドメイン配下ページかどうかで判定されており、

https://github.com/zenn-dev/zenn-editor/blob/a304e0a7092e4bc0d40fb2eeb866f4643617d045/packages/zenn-markdown-html/src/utils/md-link-attributes.ts#L12

という挙動となっていますが、これは Zenn 以外のサイトで利用するには不都合が生じうるものです

具体例として、example.com にて公開するサイトに当該パッケージを用いる場合、「内部」リンクであるはずの https://example.com/foobar へのリンクに rel="nofollow" が付与されてしまいます これは SEO 上不都合な挙動です

そこで、この「内部リンクか否か」の判定基準をユーザがカスタムできるようなオプションを提供することを提案します

解決策案

markdownToHtmloptions にて内部リンクか否かを判定する正規表現(または関数 (url: string) => boolean ?)を受け取るようにする

cm-igarashi-ryosuke commented 1 year ago

issueありがとうございます。確かにその通りですね。

現状、リソースの集中のため、zenn-editor(zenn-markdown-html含む)への機能追加は、Zenn本体やエコシステムに関わるものに限定しております。また、一般利用のためのオプションを追加すると、おそらくこれ以外にもたくさんのオプションが必要になることから、慎重に判断しています。

このような事情のため、面倒ではありますが、markdownToHtmlで生成されたHTMLを再度加工するなどして回避していただければと思います。

mkobayashime commented 12 months ago

@cm-igarashi-ryosuke ご事情理解いたしました Issue を閉じるか残すかについてはお任せしたく存じます🙏