🐫

Gatsby×Contentfulなサイトの立ち上げに使用した28のプラグイン

2022/11/05に公開

先日、Gatsby×Contentfulという構成でブログメディアサイトを立ち上げました。
https://www.boctoz.com/

このサイトの初期スタートに使用した28のプラグインを紹介します。

SEO/PWA関連

基本的な設定はGatsby Head APIでなんとかしていて、めんどくさい設定はプラグインでなんとかしてもらっています。まあどのサイトでも入れるよねってやつです。

gatsby-plugin-manifest

マニフェストの設定のほか、アイコン自動生成やfavicon設定などいろいろやってくれます。

gatsby-plugin-offline

gatsby-plugin-manifestと併用することでPWA対応ができます。

gatsby-plugin-canonical-urls

サイトURLのwwwの有無だとか重複コンテンツがある場合のdominantなページなどを指し示す場合に使います。

gatsby-plugin-robots-txt

ビルド時にrobots.txtを生成してくれます。

gatsby-plugin-advanced-sitemap

サイトマップを生成してくれます。ベーシックなgatsby-plugin-sitemapよりも強力です。

source/transformer系

外部データを引っ張ってきたり、それらをGraphQLで扱えるように整形したりしてくれるプラグインです。

gatsby-source-contentful

Contentful連携のためのプラグインです。JamstackをやりたいときにHeadless CMSの選定は色々迷うと思うのですが、このプラグインの使いやすさとContentful自体の無料範囲の広さが決め手になりました。ほしいノードは大体作られているし、不可解さも特に無いので、GraphQLが不慣れな私にとってありがたい存在です。

microCMSとも迷ったのですが、microCMSのプラグインはGatsby Imageに対応していないようでした。一方Contentfulは、後述のgatsby-remark-images-contentfulと合わせることで画像最適化が簡単にできます。

gatsby-source-filesystem

ローカルファイルからデータを取り込むときに使います。

gatsby-transformer-remark

Markdownファイルのパースに使います。このプラグインのOptionに後述のremark系プラグインが並びます。

gatsby-transformer-sharp

動的に取得した画像ファイルからGatsby Imageに対応したImageSharpノードを作ってくれます。

画像系

gatsby-plugin-image

画像最適化をよしなにやってくれるコンポーネントを提供してくれます。画像プラグインはわりと最近新しくなって、Syntaxが変わりました。

https://www.gatsbyjs.com/docs/reference/release-notes/image-migration-guide

gatsby-plugin-sharp

上のプラグインのヘルパーです。低レベルのヘルパープラグインなので直接使うのは推奨されないらしい(”You generally shouldn’t be using this directly …”)のですが、サイズ・クオリティ・フォーマットなどもろもろ変換できるようになります。

Remark系

Contentfulからブログの本文をMarkdownで取得したあと、HTMLにパースする際に色々してくれるプラグインです。

見出しにリンクを付与してくれます。

本文中のリンクを「別タブで開く」にしてくれます。

リンク切れを検知してくれます。

gatsby-remark-images-contentful

Contentful側のImage APIを使って本文中の画像を最適化してくれます。

gatsby-remark-images-medium-zoom

本文中の画像をクリックしたときにうにょーんとズームしてくれるやつです。ブログサイトのMedium風らしいです。medium-zoomというライブラリを使っているそうです。

gatsby-remark-responsive-iframe

YouTubeやTwitterなどのコンテンツ埋め込みのためのiframeの幅をいっぱいに広げてくれます。

gatsby-remark-embed-video

YouTubeなどの動画埋め込みに使います。

gatsby-plugin-twitter

Twitterの埋め込みに使います。

UIのリッチ化・スタイリング

サイトUIに関係するプラグインです。ちなみにスタイリングにはTailwind CSSを採用しました。

gatsby-plugin-nprogress

ページの読み込みが遅れた場合にインジケーターを自動で出してくれるらしいです(実はまだ自分の目で確認できたことがありません)。

gatsby-plugin-smoothscroll

スムーズスクロールを勝手にやってくれます。

gatsby-plugin-postcss

Tailwindの導入のために必要だったので入れました。

ビルドサイズ圧縮

サイトの規模が小さいうちはそこまで関係ないのですが、Jamstackの悩みの種であるビルドサイズの膨張を対策するためのプラグインです。

gatsby-plugin-preact

ReactをPreactに置き換えることで軽くしてくれるプラグインです。

自分の環境ではReact v18を使っているとエラーがでたので、v17に下げて使っています。

gatsby-plugin-purgecss

不要なCSSクラスを取り除いてくれるプラグインです。Taiwlindにも対応しています。

今回のサイトでは削減率1%未満だったので、必要性はそこまで感じていません。

For developer

開発時に便利なプラグインです。

gatsby-plugin-alias-imports

import文のエイリアスを貼れるようにするためのプラグインです。 import ... from '@/components/...'みたいなことができるようになります。

RSS

gatsby-plugin-feed

RSS機能の実装に使ったプラグインです。複数フィードの作成もできるみたいです。

Analytics・Monitoring

gatsby-plugin-google-gtag

gtagを使うためのプラグインです。

gatsby-plugin-sentry

Sentryを使うためのプラグインです。

検討中…

初期スタートには使わなかったのですが、のちのち欲しくなるかもなと思っているプラグインです。

gatsby-remark-custom-blocks

Markdownで簡単にカスタムブロックを作れるプラグインです。表現の幅を広げるのに良いなと思っています。

remarkプラグインの最新版に対応していなかったので、またカスタムブロックの表現を本当に使いたいかどうかわからなかったので採用を見送りました。

gatsby-plugin-guess-js

Google Analyticsのデータを利用して、遷移確率が高いリンクをprefetchにしておいてくれるGuess.jsを使用するためのプラグインです。

サイトはもともとサクサク目に動いているので、アクセス数が増えてきたら導入しようと思っています。

宣伝

「素朴な教訓のある文章を届ける」というコンセプトで発信しています。ぜひ立ち寄ってください。

https://www.boctoz.com/

Twitterもよろしくおねがいします。なかなかフォロワーが増えず困っています😭

https://twitter.com/boctoz

参考資料

https://sukiburo.dev/gatsby-plugins/

https://webcraftlog.net/best-gatsbyjs-plugins/

Discussion