0.12.1 • Published 7 months ago

@notion-md-converter/core v0.12.1

Weekly downloads
-
License
MIT
Repository
github
Last release
7 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

7 months ago

0.12.0

7 months ago

0.11.0

7 months ago

0.10.0

7 months ago

0.9.0

9 months ago

0.8.0

9 months ago

0.7.4

9 months ago

0.7.3

9 months ago

0.7.2

10 months ago

0.7.1

10 months ago

0.6.3

10 months ago

0.6.2

10 months ago

0.6.1

10 months ago

0.6.0

10 months ago

0.5.0

10 months ago

0.4.1

10 months ago

0.4.0

10 months ago

0.3.1

10 months ago

0.3.0

10 months ago

0.2.1

10 months ago

0.2.0

10 months ago

0.1.5

10 months ago

0.1.3

10 months ago

0.1.2

10 months ago

0.1.1

10 months ago

0.1.0

10 months ago