依存関係ゼロMDX対応SSR向け設計クロスフレームワーク

    5倍速く描画されるMarkdown。

    IntlayerはMarkdownエンジンを内蔵しています。依存関係なし、MDX対応、サーバー側で解析し、React、Next.js、Vue、Svelte、Solid、Preact、Angularでネイティブに描画します。もうレンダラーを選ぶ必要はありません。

    markdown-file.content.md
    ---key: my-markdown-contentdescription: My content---# My contentHere an example of markdown content

    front-matterのlocaleフィールドを省略すると、Intlayerは設定されたデフォルトロケールを使用します。言語プレフィックスなしで単一のMarkdownファイルにコンテンツをまとめられます。

    ファイル構造の例:
    content
    └── markdown-file.content.md
    markdown-file.en.content.md
    ---key: my-markdown-contentdescription: My contentlocale: en---# My contentHere an example of markdown content

    front-matterのlocaleフィールドはコンテンツのロケールを定義します。省略可能です。指定しない場合、Intlayerはデフォルトロケールを使用し、翻訳がない場合のフォールバックとしても機能します。

    ファイル構造の例:
    content
    ├── markdown-file.en.content.md
    ├── markdown-file.fr.content.md
    └── markdown-file.es.content.md
    article.content.ts
    import { md, file, t, type Dictionary } from 'intlayer';export default {  key: 'article',  content: {    body: t({      en: md(file('./article.en.md')),      fr: md(file('./article.fr.md')),    }),  },} satisfies Dictionary;

    md()とfile()関数を使ってTypeScript、ESM、またはJSONディクショナリ内でMarkdownを直接宣言し、型安全に翻訳を統合できます。

    ファイル構造の例:
    content
    ├── article.content.ts
    ├── article.en.md
    └── article.fr.md
    依存関係なし
    MDXコンポーネント
    型付きフロントマター
    未使用なら削除

    markdown-to-jsxの5倍のスループット

    パーサーはルール優先順位のキャッシュとインクリメンタルな後読みを軸に書き直されており、ルールごとに再走査せず一度だけ文書を走査します。同じMarkdown、同じ出力で、処理量はごくわずかです。

    Intlayer
    markdown-to-jsx

    解析と描画の相対スループット。高いほど良い。

    0 kB

    アプリがMarkdownノードを宣言しない場合の配信量。レンダラーはビルド時に削除されます。

    ~55 kB

    Suspenseの背後で遅延取得されるパーサーチャンク。初回描画を妨げません。

    0

    の実行時依存関係。監査するものも、同期し続けるものもありません。

    選定リストではなく、ひとつのエンジン

    どのプロジェクトでも同じ作業が待っています。markdown-to-jsx、marked、remark、MDXを比べ、選んだものを組み込み、MDX非対応だったり型が甘かったり、プラグインの連鎖がクライアントで壊れたりすることに気づく。Intlayerはその選択を代わりに済ませます。

    機能
    Intlayer
    markdown-to-jsx
    marked
    remark / rehype
    @mdx-js
    MDXコンポーネント
    対応
    非対応
    非対応
    部分的、または追加パッケージ経由
    対応
    型安全なノードとオーバーライド
    対応
    非対応
    部分的、または追加パッケージ経由
    部分的、または追加パッケージ経由
    部分的、または追加パッケージ経由
    ReactとNext.js向けの出力
    対応
    対応
    非対応
    部分的、または追加パッケージ経由
    対応
    Vue、Svelte、Solid、Preact、Angular
    対応
    非対応
    部分的、または追加パッケージ経由
    部分的、または追加パッケージ経由
    部分的、または追加パッケージ経由
    サーバーで解析、クライアントで描画、再解析なし
    対応
    非対応
    部分的、または追加パッケージ経由
    対応
    部分的、または追加パッケージ経由
    プラグインの連鎖なしで設定
    対応
    対応
    部分的、または追加パッケージ経由
    非対応
    非対応
    型付きのフロントマターメタデータ
    対応
    非対応
    非対応
    部分的、または追加パッケージ経由
    部分的、または追加パッケージ経由
    実行時依存関係ゼロ
    対応
    対応
    対応
    非対応
    非対応
    未使用ならバンドルから削除
    対応
    非対応
    非対応
    非対応
    非対応
    対応部分的、または追加パッケージ経由非対応
    • remarkとrehypeはその大半をこなせますが、自分で組み立てるプラグインの連鎖を通してであり、ブラウザとサーバーで挙動が同じとは限りません。
    • markdown-to-jsxはReactしか描画せず、markedはHTML文字列を返すだけです。Vue、Svelte、Solid、Angularに手を伸ばせる同等品はありません。
    • いずれも型付きのフロントマターは渡してくれません。コンテンツレイヤーを重ねるか、自分でメタデータを解析することになります。

    同じノードを、あらゆるフレームワークで

    Markdownノードは、置かれたフレームワークのネイティブな出力(JSX、VNode、HTML文字列)に変換されます。Svelte、Solid、Angularも後付けではなく一級市民です。

    サーバーで解析し、クライアントで描画

    解析と描画は別々の工程です。parseMarkdownがサーバーでシリアライズ可能なASTを生成し、ブラウザはそれをJSONとして受け取り、各レンダラーはそのまま受け付けます。文書を二度走査することはありません。

    サーバー側
    文書は一度だけ解析され、キャッシュ・ストリーム・保存できるJSONになります。
    route.server.ts
    import { parseMarkdown } from 'react-intlayer/markdown';export const loader = async () => {  // Walked once, on the server  const ast = parseMarkdown('## My title\n\nLorem Ipsum');  return Response.json({ content: ast });};
    クライアント側
    レンダラーは生の文字列でもASTでも受け付けるため、ブラウザは描画するだけです。
    Page.tsx
    import { useLoaderData } from 'react-router';import { MarkdownRenderer } from 'react-intlayer/markdown';export default function Page() {  const { content } = useLoaderData();  // No re-parsing in the browser  return <MarkdownRenderer content={content} />;}

    一度設定し、ノード単位で微調整

    プロバイダーにコンポーネントを宣言すれば、アプリ内のすべてのMarkdownノードがそれを利用します。特定のノードだけ変えたいときは、use()がそのノードだけを上書きします。プラグインの連鎖も、追加のビルド工程も不要です。

    アプリ全体に適用
    AppProvider.tsx
    import { MarkdownProvider } from 'react-intlayer/markdown';export const AppProvider = ({ children }) => (  <MarkdownProvider    components={{      h1: ({ children }) => <h1 className="text-3xl">{children}</h1>,      MyButton: (props) => <button {...props} />, // MDX component    }}  >    {children}  </MarkdownProvider>);
    個別のノードに適用
    Article.tsx
    import { useIntlayer } from 'react-intlayer';const Article = () => {  const { body } = useIntlayer('article');  // Overrides the provider, for this node only  return body.use({    h1: ({ children }) => <h1 className="text-primary">{children}</h1>,  });};

    use()はプロバイダーより優先され、プロバイダーは既定のレンダラーより優先されます。

    型付きフロントマター、コンテンツレイヤー不要

    Markdownファイルのフロントマターは本文とともに解析され、型付きのメタデータオブジェクトとしてノードに公開されます。コンテンツレイヤーを入れてまで欲しかった編集用フィールドが、補完付きでそのまま使えます。

    article.en.content.md
    ---key: articlelocale: entitle: Shipping i18n Markdownauthor: aymericzip---# Shipping i18n MarkdownHere an example of markdown content.
    Article.tsx
    const { body } = useIntlayer('article');body.metadata.title; // 'Shipping i18n Markdown'body.metadata.author; // 'aymericzip'body.value; // the raw Markdown string
    同じエンジンがHTMLも解析

    html()ノードも同じパイプラインを通ります。タグは自分のコンポーネントに対応づけられ、型付けもオーバーライド規則も同じです。

    HTMLコンテンツを見る
    コードベースのi18n

    リポジトリに存在する型安全な翻訳。

    TypeScriptまたはJavaScriptでコンポーネントと一緒にコンテンツを宣言します。Intlayerは型を自動的に生成し、オートコンプリート、検証、即時フィードバックを提供します。キーの欠落やコンテキスト切り替えはもうありません。

    AI CLI Tool

    ターミナルから翻訳を自動化。

    AIでJSONとMarkdownを監査、補完、翻訳するためのCLI。

    `npx intlayer fill`を実行して不足しているキーを検出し、OpenAI、Claude、またはローカルモデルを使用して翻訳を生成します。Git履歴をきれいに保ち、型安全性を維持します。

    Intlayer TMS

    単語ごとの支払いをやめましょう。AIで自動化します。

    CrowdinとLokaliseのオープンソースかつセルフホスト可能な代替品。モダンな開発者ワークフロー向けに構築。

    コード内またはビジュアルエディターで翻訳を直接管理。AIを活用して即座に翻訳。座席制限なしでチームと協力。

    ヘッドレスCMS

    ローカルコードとリモートコンテンツをブリッジ。

    オーバーヘッドなしで多言語コンテンツを管理。Intlayerはローカル辞書とリモート管理を相互接続し、再構築なしでホットアップデート可能なLive Syncを実現します。CI/CD用のWebhookや機能フラグ管理も可能です。

    機能フラグ

    機能を即座に切り替え。デプロイ不要。

    Intlayer辞書は単なるテキスト以上のものです。ロジック、スタイル、構成オブジェクトを宣言するために使用します。Live Syncを使用すると、CMSから直接リアルタイムで機能のオン/オフ、UIテーマの変更、アプリの動作更新が可能です。

    A/Bテスト

    プロダクト実験のためのプレイグラウンド。

    Intlayerの新しいAI搭載A/Bテストベータを最初に体験してください。発見可能性を高め、よりスマートな製品決定を導くために構築されました。コピーやデザインから機能全体まで、リアルタイムで何でもテストし、データに本当に効果的なものを示してもらいましょう。

    コミュニティによって構築

    Intlayerを可能にする素晴らしい貢献者に会おう

    Markdownレンダラー選びは終わりにしましょう

    すでにIntlayerに入っています。依存関係なし、MDX対応、SSR対応、端から端まで型付き。使わなければバンドルから消えます。