Gatsby.js について
https://www.gatsbyjs.com/
Reactでつくられた静的サイトジェネレータ
Reactをビルド時に1回だけ実行し、HTML,JSを生成する。
生成されたファイルをホスティングサービスにデプロイするだけで見られるようになる。
GraphQL
- Gatsby.jsではビルド時のさまざまなデータをGraphQLで取得する。
- Markdown形式で書いた情報を、ファイルシステムから読み込んで、GraphQL経由で取得し、Reactコンポーネント内で表示する。
- GatsbyではMarkdownファイルに限らず、様々なデータを
data source
, data transformer
という枠組みで一般化することで、多様な処理を統一的にかつ簡潔に記述することができている。
- クライアントはビルド時に形成されたGraphQL DBの全体は必要ないので、「クエリの結果」のみをJSONとして合わせてデプロイする。
starterを使ってblogを作成
テンプレートを利用してブログを構築しました。
※最初、Leonids で構築しましたがいまいち気に入らなかったので、gatsby-starter-blog で作り直しました。
作り直すにあたっては、別ディレクトリでstarterから作成 → ファイル一式をコピー → TypeScriptへの変換等で地道に行いました。
TypeScript化する
tsxに変更
GraphQLのクエリ結果を型解決する
TailwindCSS
TailwindCSSのユーティリティを組み合わせる思想が好きでよく使用するので、本ブログでも
https://www.gatsbyjs.com/docs/how-to/styling/tailwind-css/
に沿って設定していきます。
インストール、初期設定
PostCSSで適用する
base CSSを追加する
@tailwind
ディレクティブを使用してTailwindの base
, components
, utilities
をCSSに挿入します。
カスタムCSSにTailwindのクラスを適用したい場合以下のように書ける
gatsby-browser.js
で読み込む
Purge を設定する
デフォルトではTailwindCSS全体がビルドに含まれるため、ファイルサイズ削減のために必要なclassのみにpurgeする。
TOCを追加
gatsby-remark-autolink-headers で見出しにアンカーがつくようにする
TOCコンポーネントを作成してページのコンポーネントに追加
コードブロックにタイトルを設定
参考: Gatsbyにシンタックスハイライトを入れてコードをきれいに表示する | littlebylittle
gatsby-remark-code-titles を使って、コードブロックにタイトルをつけます
コードタイトル用のスタイルを追加