From bd0cab1f2d198681dd9eb6b2ccf2beeca43ce5e3 Mon Sep 17 00:00:00 2001 From: 安竹洋平 <61961825+yasutakeyohei@users.noreply.github.com> Date: Mon, 29 Jan 2024 09:30:32 +0900 Subject: build --- build/blog/2024/01/26/new-flat-blog/index.html | 2 +- .../01/27/docusaurus-admonition-heading-toc/index.html | 12 ++++++------ build/blog/archive/index.html | 2 +- build/blog/atom.xml | 14 +++++++------- build/blog/index.html | 8 ++++---- build/blog/rss.xml | 14 +++++++------- build/blog/tags/docusaurus/index.html | 8 ++++---- build/blog/tags/index.html | 2 +- build/blog/tags/v-3-1/index.html | 8 ++++---- .../index.html" | 2 +- "build/blog/tags/\346\212\200\350\241\223/index.html" | 8 ++++---- 11 files changed, 40 insertions(+), 40 deletions(-) (limited to 'build/blog') diff --git a/build/blog/2024/01/26/new-flat-blog/index.html b/build/blog/2024/01/26/new-flat-blog/index.html index f9355b7b..6a5582c0 100644 --- a/build/blog/2024/01/26/new-flat-blog/index.html +++ b/build/blog/2024/01/26/new-flat-blog/index.html @@ -9,7 +9,7 @@ - + diff --git a/build/blog/2024/01/27/docusaurus-admonition-heading-toc/index.html b/build/blog/2024/01/27/docusaurus-admonition-heading-toc/index.html index 0c9bf4ee..15057122 100644 --- a/build/blog/2024/01/27/docusaurus-admonition-heading-toc/index.html +++ b/build/blog/2024/01/27/docusaurus-admonition-heading-toc/index.html @@ -9,14 +9,14 @@ - + -
メインコンテンツまでスキップ

Docusaurusの注意書きや警告文のタイトルを見出しにして、目次にも乗せる方法

· 約17分
安竹 洋平

Docusaurusはスゴイね🦖

-

1ヵ月弱使いましたが、このDocusaurus(ドキュサウルス)は数あるCMSの中でも秀逸です。

+

Docusaurusの注意書きや警告文のタイトルを見出しにして、目次にも乗せる方法

· 約17分
安竹 洋平

Docusaurus🦖

+

1ヵ月弱使いましたがこのDocusaurus(ドキュサウルス)は数あるCMSの中でも秀逸です。

文書作成と管理が容易で、拡張の自由度も非常に高く、完全なオープンソース。

-

議員活動に重要な「資料を作成しまとめて公開するツール」として現状の最適解ではないでしょうか。

+

議員活動に重要な「資料を作成しまとめて公開するツール」として現状の最適解と感じます。

facebookが母体なので色々と気になるところですが、Reactを初めとして有益なソフトウェアを完全なオープンソースとして提供してくれていることは純粋にありがたいと感じます。

Admonitionのタイトルが見出しにならない

@@ -34,7 +34,7 @@
Admonitionの記法(mdもしくはmdxに記載)
:::info

#### テスト

~文章~

:::

見た目がイマイチになります。

備考

テスト

~文章~

-

ほかのユーザーからの要望も上がっており、私も少し不便に感じていたので、次の仕様になるようカスタマイズしました。そのカスタマイズ方を紹介する記事です。

+

ほかのユーザーからの要望も上がっており、私も少し不便に感じていたので、次の仕様になるようカスタマイズしましたのでその方法を解説します。

カスタマイズ後はどうなるか

後述のカスタマイズをすると、Admonitionのタイトル部に(通常の見出しmarkdownと同様に)#を冒頭に2個以上入れる ことで見出しになります。またTOCにも反映されます。#を2個以上としているのは、H1をAdmonitionには使わないはずのため。また#を入れない場合は見出しにならず、TOCにも反映されません。

タイトル冒頭に#を入れた場合

@@ -108,6 +108,6 @@

Layoutファイルを次のように変更するのみです。

src/theme/Admonition/Layout/index.js
import React from 'react';
import clsx from 'clsx';
import {ThemeClassNames} from '@docusaurus/theme-common';
import styles from './styles.module.css';
import headingStyles from '@docusaurus/theme-classic/lib/theme/Heading/styles.module.css';

function AdmonitionContainer({type, className, children}) {
return (
<div
className={clsx(
ThemeClassNames.common.admonition,
ThemeClassNames.common.admonitionType(type),
styles.admonition,
className,
)}>
{children}
</div>
);
}
function AdmonitionHeading({icon, title, id}) {
let depth = 0;
let trimmedTitle = title;
// titleにHTML等が含まれている場合は文字列ではなく配列になる
if(typeof title === "string") {
// 文字列冒頭の#の数を数える(
depth = title.match ? (title.toString().match(/^#+/) || [''])[0].length : 0;
// #を省いたタイトルを得る
trimmedTitle = depth > 0 ? title.replace(/^#+/, '').trim() : title;
} else if (typeof title[0] === "string") {
depth = title[0].match ? (title[0].match(/^#+/) || [''])[0].length : 0;
trimmedTitle = depth > 0 ? [title[0].replace(/^#+/, '').trim(), ...title.slice(1)] : title;
}

// スクロール位置調整のcss
const classNames = clsx("anchor", "title", headingStyles.anchorWithStickyNavbar);
// depthに応じて見出しタグをレンダー
return (
<div className={styles.admonitionHeading}>
<span className={styles.admonitionIcon}>{icon}</span>
{(() => {
if (depth == 3) {
return(
<h3
id={id}
className={classNames}
>
{trimmedTitle}
</h3>
)
} else if (depth == 4) {
return(
<h4
id={id}
className={classNames}
>
{trimmedTitle}
</h4>
)
} else if (depth == 5) {
return(
<h5
id={id}
className={classNames}
>
{trimmedTitle}
</h5>
)
} else if (depth == 6) {
return(
<h6
id={id}
className={classNames}
>
{trimmedTitle}
</h6>
)
} else {
return(
<>
{trimmedTitle}
</>
)
}
})()}
</div>
);
}
function AdmonitionContent({children}) {
return children ? (
<div className={styles.admonitionContent}>{children}</div>
) : null;
}
export default function AdmonitionLayout(props) {
const {type, icon, title, children, className, id} = props;
return (
<AdmonitionContainer type={type} className={className}>
<AdmonitionHeading title={title} icon={icon} id={id} />
<AdmonitionContent>{children}</AdmonitionContent>
</AdmonitionContainer>
);
}

上記を設定後、npm start等の再起動が必要です。

-

以上です。

+

以上です。

\ No newline at end of file diff --git a/build/blog/archive/index.html b/build/blog/archive/index.html index b95b71b5..d1702a67 100644 --- a/build/blog/archive/index.html +++ b/build/blog/archive/index.html @@ -9,7 +9,7 @@ - + diff --git a/build/blog/atom.xml b/build/blog/atom.xml index 91579e45..965fb731 100644 --- a/build/blog/atom.xml +++ b/build/blog/atom.xml @@ -13,10 +13,10 @@ 2024-01-27T00:00:00.000Z - Docusaurusはスゴイね🦖 -

1ヵ月弱使いましたが、このDocusaurus(ドキュサウルス)は数あるCMSの中でも秀逸です。

+ Docusaurus🦖 +

1ヵ月弱使いましたがこのDocusaurus(ドキュサウルス)は数あるCMSの中でも秀逸です。

文書作成と管理が容易で、拡張の自由度も非常に高く、完全なオープンソース。

-

議員活動に重要な「資料を作成しまとめて公開するツール」として現状の最適解ではないでしょうか。

+

議員活動に重要な「資料を作成しまとめて公開するツール」として現状の最適解と感じます。

facebookが母体なので色々と気になるところですが、Reactを初めとして有益なソフトウェアを完全なオープンソースとして提供してくれていることは純粋にありがたいと感じます。

Admonitionのタイトルが見出しにならない

@@ -27,14 +27,14 @@
infoの例

ここに文章を書く

しかし(DocusaurusV3.1)でこのAdmonitionのタイトルは見出し(Heading)にならず、目次(TOC)にも乗りません。上記例なら「INFOの例」がTOCに表示されません。

次の図からも分かっていただけるかと思います。

-

Admonitionのタイトルが見出しにならない

+

Admonitionのタイトルが見出しになら�ない

些細なことのようにも思えますが、Docusaurusを書籍のように扱うには結構気になるところ。

なお以前はAdmonitionのタイトルはH5要素になっていたようですが、深さ(H1~H5のレベル)を決め打ちするのは好ましくないということから(?)、今はH5要素ではありません。

次のように本文中に見出しを書く方法もありますが

Admonitionの記法(mdもしくはmdxに記載)
:::info

#### テスト

~文章~

:::

見た目がイマイチになります。

備考

テスト

~文章~

-

ほかのユーザーからの要望も上がっており、私も少し不便に感じていたので、次の仕様になるようカスタマイズしました。そのカスタマイズ方を紹介する記事です。

+

ほかのユーザーからの要望も上がっており、私も少し不便に感じていたので、次の仕様になるようカスタマイズしましたのでその方法を解説します。

カスタマイズ後はどうなるか

後述のカスタマイズをすると、Admonitionのタイトル部に(通常の見出しmarkdownと同様に)#を冒頭に2個以上入れる ことで見出しになります。またTOCにも反映されます。#を2個以上としているのは、H1をAdmonitionには使わないはずのため。また#を入れない場合は見出しにならず、TOCにも反映されません。

タイトル冒頭に#を入れた場合

@@ -72,7 +72,7 @@

Swizzlingはこちらに説明がある通りの機能で、簡単に言うとReactのコンポーネントをカスタマイズできる機能です。

Swizzlingの設定をすると、Docusaurusがデフォルトのコンポーネントの代わりに自動的にカスタマイズしたコンポーネントを使用するようになります。

今回は、デフォルトのAdmonitionにないID属性を持たせるためAdmonitionコンポーネントをカスタマイズしました。Swizzlingの設定をすることにより、デフォルトのAdmonitionの代わりにこのカスタムコンポーネントが使われるようにします。

-

動作原理

+

動作原理

TOCは「ASTに含まれているheading要素を単純に配列に入れている」だけですが、この処理はカスタマイズで上書きできません。そこで、カスタマイズできる処理だけでAdmonitionのタイトルをTOCに反映する方法として次を思いつき、実装しました。

  1. docusaurusのデフォルトプラグインがTOCの処理を行うより前に、Admonitionのタイトル部を見出しとして新規作成し、Admonition要素の直前に追加する
  2. @@ -85,7 +85,7 @@

    まずdocusaurus.config.jsonにimportとplugin設定を記入します(ハイライト部)。

    これでDocusaurusデフォルトプラグイン適用の前後にそれぞれ自作のRemark/Rehypeプラグインが実行されることになります。

    blogなどを入れている場合は、そのプロパティにも記載します。

    -
    docusaurus.config.json
    import admonitionTitleToHeadingBeforeTOC from './src/remark/admonition-title-to-heading-before-toc.js';
    import admonitionTitleToHeadingAfterTOC from './src/rehype/admonition-title-to-heading-after-toc.js';

    export default {
    // ...
    presets: [
    [
    'classic',
    /** @type {import('@docusaurus/preset-classic').Options} */
    ({
    docs: {
    // ...
    beforeDefaultRemarkPlugins: [admonitionTitleToHeadingBeforeTOC],
    rehypePlugins: [admonitionTitleToHeadingAfterTOC],
    },
    blog: {
    // ...
    beforeDefaultRemarkPlugins: [admonitionTitleToHeadingBeforeTOC],
    rehypePlugins: [admonitionTitleToHeadingAfterTOC],
    },
    // ...
    }),
    ]],
    // ...
    }
    +
    docusaurus.config.json
    import admonitionTitleToHeadingBeforeTOC from './src/remark/admonition-title-to-heading-before-toc.js';
    import admonitionTitleToHeadingAfterTOC from './src/rehype/admonition-title-to-heading-after-toc.js';

    export default {
    // ...
    presets: [
    [
    'classic',
    /** @type {import('@docusaurus/preset-classic').Options} */
    ({
    docs: {
    // ...
    beforeDefaultRemarkPlugins: [admonitionTitleToHeadingBeforeTOC],
    rehypePlugins: [admonitionTitleToHeadingAfterTOC],
    },
    blog: {
    // ...
    beforeDefaultRemarkPlugins: [admonitionTitleToHeadingBeforeTOC],
    rehypePlugins: [admonitionTitleToHeadingAfterTOC],
    },
    // ...
    }),
    ]],
    // ...
    }

    Remark/Rehypeプラグイン

    次にプラグインを実装します。

    docusaurusのsrcディレクトリ下にrehypeとremarkというディレクトリを作り、次のファイル名と内容で2つのプラグインを作ります。

    diff --git a/build/blog/index.html b/build/blog/index.html index 4e222c12..09c19ce9 100644 --- a/build/blog/index.html +++ b/build/blog/index.html @@ -9,14 +9,14 @@ - + -
    メインコンテンツまでスキップ

    · 約17分
    安竹 洋平

    Docusaurusはスゴイね🦖

    -

    1ヵ月弱使いましたが、このDocusaurus(ドキュサウルス)は数あるCMSの中でも秀逸です。

    +

    · 約17分
    安竹 洋平

    Docusaurus🦖

    +

    1ヵ月弱使いましたがこのDocusaurus(ドキュサウルス)は数あるCMSの中でも秀逸です。

    文書作成と管理が容易で、拡張の自由度も非常に高く、完全なオープンソース。

    -

    議員活動に重要な「資料を作成しまとめて公開するツール」として現状の最適解ではないでしょうか。

    · 約1分
    安竹 洋平

    今後の展開を考え、これまでの議会活動等のまとめをこのDocusaurusの仕組みに移行しています。

    ふらっとブログもこちらに新しく立ち上げることにしました。

    議員活動や、その裏で活用している技術について、誰かの役に立つかもしれないことを中心にブログにしていきます😁

    diff --git a/build/blog/rss.xml b/build/blog/rss.xml index 94aea561..d128f782 100644 --- a/build/blog/rss.xml +++ b/build/blog/rss.xml @@ -14,10 +14,10 @@ https://yasutakeyohei.com/docs/blog/2024/01/27/docusaurus-admonition-heading-toc Sat, 27 Jan 2024 00:00:00 GMT - Docusaurusはスゴイね🦖 -

    1ヵ月弱使いましたが、このDocusaurus(ドキュサウルス)は数あるCMSの中でも秀逸です。

    + Docusaurus🦖 +

    1ヵ月弱使いましたがこのDocusaurus(ドキュサウルス)は数あるCMSの中でも秀逸です。

    文書作成と管理が容易で、拡張の自由度も非常に高く、完全なオープンソース。

    -

    議員活動に重要な「資料を作成しまとめて公開するツール」として現状の最適解ではないでしょうか。

    +

    議員活動に重要な「資料を作成しまとめて公開するツール」として現状の最適解と感じます。

    facebookが母体なので色々と気になるところですが、Reactを初めとして有益なソフトウェアを完全なオープンソースとして提供してくれていることは純粋にありがたいと感じます。

    Admonitionのタイトルが見出しにならない

    @@ -28,14 +28,14 @@
    infoの例

    ここに文章を書く

    しかし(DocusaurusV3.1)でこのAdmonitionのタイトルは見出し(Heading)にならず、目次(TOC)にも乗りません。上記例なら「INFOの例」がTOCに表示されません。

    次の図からも分かっていただけるかと思います。

    -

    Admonitionのタイトルが見出しにならない

    +

    Admonitionのタイトルが見出しになら�ない

    些細なことのようにも思えますが、Docusaurusを書籍のように扱うには結構気になるところ。

    なお以前はAdmonitionのタイトルはH5要素になっていたようですが、深さ(H1~H5のレベル)を決め打ちするのは好ましくないということから(?)、今はH5要素ではありません。

    次のように本文中に見出しを書く方法もありますが

    Admonitionの記法(mdもしくはmdxに記載)
    :::info

    #### テスト

    ~文章~

    :::

    見た目がイマイチになります。

    備考

    テスト

    ~文章~

    -

    ほかのユーザーからの要望も上がっており、私も少し不便に感じていたので、次の仕様になるようカスタマイズしました。そのカスタマイズ方を紹介する記事です。

    +

    ほかのユーザーからの要望も上がっており、私も少し不便に感じていたので、次の仕様になるようカスタマイズしましたのでその方法を解説します。

    カスタマイズ後はどうなるか

    後述のカスタマイズをすると、Admonitionのタイトル部に(通常の見出しmarkdownと同様に)#を冒頭に2個以上入れる ことで見出しになります。またTOCにも反映されます。#を2個以上としているのは、H1をAdmonitionには使わないはずのため。また#を入れない場合は見出しにならず、TOCにも反映されません。

    タイトル冒頭に#を入れた場合

    @@ -73,7 +73,7 @@

    Swizzlingはこちらに説明がある通りの機能で、簡単に言うとReactのコンポーネントをカスタマイズできる機能です。

    Swizzlingの設定をすると、Docusaurusがデフォルトのコンポーネントの代わりに自動的にカスタマイズしたコンポーネントを使用するようになります。

    今回は、デフォルトのAdmonitionにないID属性を持たせるためAdmonitionコンポーネントをカスタマイズしました。Swizzlingの設定をすることにより、デフォルトのAdmonitionの代わりにこのカスタムコンポーネントが使われるようにします。

    -

    動作原理

    +

    動作原理

    TOCは「ASTに含まれているheading要素を単純に配列に入れている」だけですが、この処理はカスタマイズで上書きできません。そこで、カスタマイズできる処理だけでAdmonitionのタイトルをTOCに反映する方法として次を思いつき、実装しました。

    1. docusaurusのデフォルトプラグインがTOCの処理を行うより前に、Admonitionのタイトル部を見出しとして新規作成し、Admonition要素の直前に追加する
    2. @@ -86,7 +86,7 @@

      まずdocusaurus.config.jsonにimportとplugin設定を記入します(ハイライト部)。

      これでDocusaurusデフォルトプラグイン適用の前後にそれぞれ自作のRemark/Rehypeプラグインが実行されることになります。

      blogなどを入れている場合は、そのプロパティにも記載します。

      -
      docusaurus.config.json
      import admonitionTitleToHeadingBeforeTOC from './src/remark/admonition-title-to-heading-before-toc.js';
      import admonitionTitleToHeadingAfterTOC from './src/rehype/admonition-title-to-heading-after-toc.js';

      export default {
      // ...
      presets: [
      [
      'classic',
      /** @type {import('@docusaurus/preset-classic').Options} */
      ({
      docs: {
      // ...
      beforeDefaultRemarkPlugins: [admonitionTitleToHeadingBeforeTOC],
      rehypePlugins: [admonitionTitleToHeadingAfterTOC],
      },
      blog: {
      // ...
      beforeDefaultRemarkPlugins: [admonitionTitleToHeadingBeforeTOC],
      rehypePlugins: [admonitionTitleToHeadingAfterTOC],
      },
      // ...
      }),
      ]],
      // ...
      }
      +
      docusaurus.config.json
      import admonitionTitleToHeadingBeforeTOC from './src/remark/admonition-title-to-heading-before-toc.js';
      import admonitionTitleToHeadingAfterTOC from './src/rehype/admonition-title-to-heading-after-toc.js';

      export default {
      // ...
      presets: [
      [
      'classic',
      /** @type {import('@docusaurus/preset-classic').Options} */
      ({
      docs: {
      // ...
      beforeDefaultRemarkPlugins: [admonitionTitleToHeadingBeforeTOC],
      rehypePlugins: [admonitionTitleToHeadingAfterTOC],
      },
      blog: {
      // ...
      beforeDefaultRemarkPlugins: [admonitionTitleToHeadingBeforeTOC],
      rehypePlugins: [admonitionTitleToHeadingAfterTOC],
      },
      // ...
      }),
      ]],
      // ...
      }

      Remark/Rehypeプラグイン

      次にプラグインを実装します。

      docusaurusのsrcディレクトリ下にrehypeとremarkというディレクトリを作り、次のファイル名と内容で2つのプラグインを作ります。

      diff --git a/build/blog/tags/docusaurus/index.html b/build/blog/tags/docusaurus/index.html index dfb500c0..683943bf 100644 --- a/build/blog/tags/docusaurus/index.html +++ b/build/blog/tags/docusaurus/index.html @@ -9,14 +9,14 @@ - + -

      「docusaurus」タグの記事が2件件あります

      全てのタグを見る

      · 約17分
      安竹 洋平

      Docusaurusはスゴイね🦖

      -

      1ヵ月弱使いましたが、このDocusaurus(ドキュサウルス)は数あるCMSの中でも秀逸です。

      +

      「docusaurus」タグの記事が2件件あります

      全てのタグを見る

      · 約17分
      安竹 洋平

      Docusaurus🦖

      +

      1ヵ月弱使いましたがこのDocusaurus(ドキュサウルス)は数あるCMSの中でも秀逸です。

      文書作成と管理が容易で、拡張の自由度も非常に高く、完全なオープンソース。

      -

      議員活動に重要な「資料を作成しまとめて公開するツール」として現状の最適解ではないでしょうか。

      · 約1分
      安竹 洋平

      今後の展開を考え、これまでの議会活動等のまとめをこのDocusaurusの仕組みに移行しています。

      ふらっとブログもこちらに新しく立ち上げることにしました。

      議員活動や、その裏で活用している技術について、誰かの役に立つかもしれないことを中心にブログにしていきます😁

      diff --git a/build/blog/tags/index.html b/build/blog/tags/index.html index 661bec58..d4577ff0 100644 --- a/build/blog/tags/index.html +++ b/build/blog/tags/index.html @@ -9,7 +9,7 @@ - + diff --git a/build/blog/tags/v-3-1/index.html b/build/blog/tags/v-3-1/index.html index bdb3cd0b..ab7204e9 100644 --- a/build/blog/tags/v-3-1/index.html +++ b/build/blog/tags/v-3-1/index.html @@ -9,13 +9,13 @@ - + -

      「v3.1」タグの記事が1件件あります

      全てのタグを見る

      · 約17分
      安竹 洋平

      Docusaurusはスゴイね🦖

      -

      1ヵ月弱使いましたが、このDocusaurus(ドキュサウルス)は数あるCMSの中でも秀逸です。

      +

      「v3.1」タグの記事が1件件あります

      全てのタグを見る

      · 約17分
      安竹 洋平

      Docusaurus🦖

      +

      1ヵ月弱使いましたがこのDocusaurus(ドキュサウルス)は数あるCMSの中でも秀逸です。

      文書作成と管理が容易で、拡張の自由度も非常に高く、完全なオープンソース。

      -

      議員活動に重要な「資料を作成しまとめて公開するツール」として現状の最適解ではないでしょうか。

      +

      議員活動に重要な「資料を作成しまとめて公開するツール」として現状の最適解と感じます。

      \ No newline at end of file diff --git "a/build/blog/tags/\343\201\212\347\237\245\343\202\211\343\201\233/index.html" "b/build/blog/tags/\343\201\212\347\237\245\343\202\211\343\201\233/index.html" index d9cf4c32..b4c97262 100644 --- "a/build/blog/tags/\343\201\212\347\237\245\343\202\211\343\201\233/index.html" +++ "b/build/blog/tags/\343\201\212\347\237\245\343\202\211\343\201\233/index.html" @@ -9,7 +9,7 @@ - + diff --git "a/build/blog/tags/\346\212\200\350\241\223/index.html" "b/build/blog/tags/\346\212\200\350\241\223/index.html" index da70d5f2..cd1f0ff5 100644 --- "a/build/blog/tags/\346\212\200\350\241\223/index.html" +++ "b/build/blog/tags/\346\212\200\350\241\223/index.html" @@ -9,13 +9,13 @@ - + -

      「技術」タグの記事が1件件あります

      全てのタグを見る

      · 約17分
      安竹 洋平

      Docusaurusはスゴイね🦖

      -

      1ヵ月弱使いましたが、このDocusaurus(ドキュサウルス)は数あるCMSの中でも秀逸です。

      +

      「技術」タグの記事が1件件あります

      全てのタグを見る

      · 約17分
      安竹 洋平

      Docusaurus🦖

      +

      1ヵ月弱使いましたがこのDocusaurus(ドキュサウルス)は数あるCMSの中でも秀逸です。

      文書作成と管理が容易で、拡張の自由度も非常に高く、完全なオープンソース。

      -

      議員活動に重要な「資料を作成しまとめて公開するツール」として現状の最適解ではないでしょうか。

      +

      議員活動に重要な「資料を作成しまとめて公開するツール」として現状の最適解と感じます。

      \ No newline at end of file -- cgit v1.2.3-54-g00ecf