このプロジェクトについて
remarkは、プラグインを中心に構築されたMarkdownプロセッサで、unifiedコレクションの一部です。Markdownをプレーンテキストとして扱うのではなく、構造化された抽象構文木(mdast)に解析し、プラグインがその内容を検査・変更した上で、再びシリアライズすることができます。
モノレポには複数のパッケージが含まれています。remark-parse(Markdownを構文木へ)、remark-stringify(構文木をMarkdownへ戻す)、remark(unified・parse・stringifyを組み合わせてMarkdownからMarkdownへの処理を行う)、remark-cli(Markdownファイルを検査・整形するためのコマンドラインインターフェース)です。
READMEに記載されている主な特徴は次のとおりです。
- デフォルトでCommonMark準拠。GFMやMDXはプラグインでサポート可能。
- ASTベースの処理により、プログラムによる検査と変換が容易。
- remark-gfm(GitHub Flavored Markdown)、remark-lint(スタイルチェック)、remark-toc(目次生成)、remark-rehype(MarkdownからHTML)など、150以上のプラグインからなるエコシステム。
- サーバー、クライアント、CLI、Denoで利用可能。
一般的な用途としては、MarkdownからHTMLへの変換(多くの場合rehypeエコシステムとrehype-sanitizeを組み合わせる)、GFMやYAML frontmatterなどの構文拡張の有効化、Markdownの一貫性を保つためのリンティング、CLIとpackage.json内のremarkConfigエントリを使ったプロジェクト内のMarkdownファイルの整形などがあります。
このプロジェクトはTypeScriptで完全に型付けされており、mdast型は@types/mdastから利用できます。READMEにはセキュリティ上の考慮事項も記載されています。MarkdownはHTMLになり得るため、不適切な処理はユーザーをクロスサイトスクリプティングにさらす可能性があります。したがって、HTMLを生成する場合はrehype-sanitizeを推奨します。また、巨大または悪意のある入力はパフォーマンス低下やクラッシュを引き起こす可能性があるため、入力サイズを制限し、別のスレッドやワーカーで処理することを推奨しています。プラグインはそれぞれ個別にリスクを評価する必要があります。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.