0.12.1 • Published 5 months ago

@notion-md-converter/core v0.12.1

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

@notion-md-converter/core

NotionページをMarkdownに変換するためのコアパッケージです。

🚀 インストール

npmでインストール

# JavaScriptの場合
npm install @notion-md-converter/core

# TypeScriptの場合
npm install @notion-md-converter/core @notion-md-converter/types

📖 使い方

APIキーを取得するには、NotionのGetting Started Guideに従ってください。

基本的な例

import {
  $getPageFullContent,
  NotionMarkdownConverter,
} from "@notion-md-converter/core";
import { Client } from "@notionhq/client";

const client = new Client({
  auth: API_KEY,
});

const pageId = "some-page-id";
// このライブラリのNotion APIヘルパー
// Notion Blockの子要素を再帰的に取得
const content = await $getPageFullContent(client, pageId);

// Markdownに変換
const executor = new NotionMarkdownConverter();
const result = executor.execute(content);

Markdown出力のカスタマイズ

見出しブロックの変換を変更したい場合の例です。 例えば、Markdown見出しの#の数を1つ増やすカスタムトランスフォーマーを定義します。

import { createHeadingTransformerFactory, MarkdownUtils } from "@notion-md-converter/core";

export const createMarkdownCustomHeadingTransformer = () => {
	// トランスフォーマーを作成する関数を使用
  return createHeadingTransformerFactory(({ level, richText }) => {
    const text = MarkdownUtils.convertRichTextsToMarkdown(richText);
    return MarkdownUtils.wrapWithNewLines(MarkdownUtils.heading(text, level + 1)); // レベルを1追加
  });
};

トランスフォーマーのテストを簡単に書けるよう、@notion-md-converter/testingライブラリを提供しています。 このライブラリを使用すると、Notionブロックオブジェクトを簡単に作成し、変換結果をテストできます。

$ npm install @notion-md-converter/testing
import {
  createTransformerContext,
  createHeading1Block,
  createTextRichText,
  dedent,
} from "@notion-md-converter/testing";
import { createMarkdownCustomHeadingTransformer } from "./createMarkdownCustomHeadingTransformer";

describe("createMarkdownCustomHeadingTransformer", () => {
  const transformer = createMarkdownCustomHeadingTransformer();

  it("heading_1ブロックを変換できる", () => {
    const block = createHeading1Block({
      richText: [
        createTextRichText({
          content: "Hello",
        }),
      ],
    });
    const context = createTransformerContext({
      blocks: [block],
    });

    const result = transformer(context);
    expect(result).toBe(dedent({ wrap: true })`
      ## Hello
    `);
  });
});

作成したトランスフォーマーをコンバーターのオプションで定義します。

const executor = new NotionMarkdownConverter({
  heading: createMarkdownCustomHeadingTransformer(),
});
const result = executor.execute(content);

キャプションメタデータ

画像、コードブロック、埋め込みなどのブロックでキャプションにメタデータを設定できます。メタデータはkey=value形式で指定し、キャプションの先頭から最初の:までがメタデータとして扱われます。

基本的な使い方

width=500:これは画像の説明です

この場合:

  • width=500 がメタデータ
  • これは画像の説明です が実際のキャプション

複数のメタデータ

複数のメタデータは&で区切って指定できます:

width=500&height=300:これは画像の説明です

この場合:

  • width=500height=300 がメタデータ
  • これは画像の説明です が実際のキャプション

使用例

  • 画像幅の指定: width=500:画像の説明
  • コードブロックのdiff設定: diff=true:filename.js

ライセンス

MITライセンスの下で配布されています。詳細はLICENSEをご覧ください。

作者

malvageee (https://github.com/salvage0707)

0.12.1

5 months ago

0.12.0

5 months ago

0.11.0

5 months ago

0.10.0

5 months ago

0.9.0

7 months ago

0.8.0

7 months ago

0.7.4

7 months ago

0.7.3

7 months ago

0.7.2

8 months ago

0.7.1

8 months ago

0.6.3

8 months ago

0.6.2

8 months ago

0.6.1

8 months ago

0.6.0

8 months ago

0.5.0

8 months ago

0.4.1

8 months ago

0.4.0

8 months ago

0.3.1

8 months ago

0.3.0

8 months ago

0.2.1

8 months ago

0.2.0

8 months ago

0.1.5

8 months ago

0.1.3

8 months ago

0.1.2

8 months ago

0.1.1

8 months ago

0.1.0

8 months ago