Gatsbyでブログやメディアを作る時に使いたいプラグイン

gatsby

Gatsbyでブログやメディアを作る時に必須なプラグインがあります。

いくつかサイトを作っているうちに大体同じプラグイン使っているな、というものが出揃って来ました。

中には使うのを忘れると致命的なプラグインも存在するので、今回はいつも忘れずに使っているプラグインを紹介します。

サイトマップを生成

サイトマップはクローラーにページの存在を伝えるためにどのようなサイトでも作っておいて損はありません。
そのためサイトを作る際には必ずサイトマップを作るようにしています。

Gatsbyでサイトマップを生成するためにはgatsby-plugin-sitemapを使います。

gatsby-plugin-sitemap | GatsbyJS

gastby-config.jsに追加するだけで使うことができます。
デフォルトではビルドして静的に作られるHTMLのパスがすべてサイトマップにのりますが、都合が悪いこともあるためオプションを指定します。

{
resolve: `gatsby-plugin-sitemap`,
options: {
exclude: [`取り除きたいパス/**/*`]
}
},

Options.excludeにパスを指定するとそのパスはサイトマップから取り除かれます。

URLを正規化

linkタグの1つにcanonicalがあります。
指定をすることで類似ページや重複ページを正規化することが可能です。

この記事では説明しませんが、URLの正規化について知りたい場合は下記リンクを参照してみてください。

Gastbyでcanonicalを指定するにはgatsby-plugin-canonical-urlsを使います。

gatsby-plugin-canonical-urls | GatsbyJS
{
resolve: `gatsby-plugin-canonical-urls`,
options: {
siteUrl: `https://mk-engineer.com`
}
},

このように設定することで各ページのheadに

のようなコードを生成されます。

Google Analyticsを設定

多くサイトで使われているであろうアクセス解析のGoogle Analytics。
Gatsbyではgatsby-plugin-google-analyticsを使うことで簡単に設定が可能です。

gatsby-plugin-google-analytics | GatsbyJS
{
resolve: `gatsby-plugin-google-analytics`,
options: {
trackingId: 'UA-○○○○○○○○-○'
}
}

プラグインのオプションでトラッキング用のIDを設定するだけで、ページへのアクセスをトラッキングしてくれるようになります。

react-helmetの内容をSSR

Reactで動的にheadのタグを更新するためにreact-helmetは有名なパッケージです。
SEOを考慮するサイトでは適切なheadタグの指定はかかせません。

Gatsbyでもreact-helmetを使うことができますが、注意点があります。
それはGatsbyではreact-helmetの内容がデフォルトでSSRされないことです。

開発時は開発者ツールなどでmetaタグが設定されていることを確認することになるので、うっかりしてしまいがちです。
Gatsbyでreact-helmetをSSRにするはgatsby-plugin-react-helmetを使用します。

gatsby-plugin-react-helmet | GatsbyJS
plugins: [
`gatsby-plugin-react-helmet`
]

このようにプラグイン名を記述するだけ特にオプションを設定することなくSSRすることができます。
標準で搭載してほしいくらい必要な機能なので、忘れないうちに入れてしまうこと推奨です。

フィードを生成

Gatsbyはマークダウンをデータ化してHTMLを生成したり、WordPressやContenfulのデータをAPIでやりとりすることできます。
データを利用して静的なHTMLを生成できるのでブログやメディアサイトとの相性がとても良いです。

ブログやメディアを作っていると必要になることが多いRSSフィード。 自分で用意するのは手間ですがGatsbyではgatsby-plugin-feedを使うことで、簡単にRSSフィードを生成することができます。

gatsby-plugin-feed | GatsbyJS
{
resolve: `gatsby-plugin-feed`,
options: {
feeds: [
{
serialize: ({ query: { allContentfulPost } }) => {
return allContentfulPost.edges.map(edge => {
return {
title: edge.node.title,
url: `${url}/${edge.node.slug}`,
guid: `${url}/${edge.node.slug}`,
description: edge.node.body.body
}
})
},
query: `
{
allContentfulPost {
edges {
node {
title,
slug,
body {
body
}
}
}
}
}
`,
output: '/rss.xml'
}
]
}
}

これはcontentfulからデータを取得するgatsby-source-contentfulを合わせて使う場合の設定です。

QueryにGatsbyでデータを取得するためのクエリを指定することで、searializeでデータを受け取ることができます。
Searializeで返したデータをoutputで指定したファイルに生成してくれます。

まとめ

Gatsbyはプラグインも充実していて、自分でやるとめんどくさいこともプラグインですぐに実現できることが多くあります。

今回紹介したプラグインはブログやメディアなどSEOを考慮したサイトでは特に使いたいプラグインです。

まだ使ったことのないプラグインがあれば使ってみてはどうでしょうか!