Gatsbyで利用中のおすすめプラグインを全部紹介する
公開日 :2021年01月03日
このサイトで使っているプラグインを紹介する。基本的に全てお勧めできる。随時更新。
なお、基本的にはこのサイトで採用している設定方法を載せる。全てのオプションは載せていないので注意してほしい。
プラグインの設定方法
プラグインはgatsby-config.js
に設定を記述する。記述場所はplugins
内部である。
gatsby-config.js
module.exports = {
...
plugins: [
// ここの部分に記述する
]
}
また、これは任意だがサイトの名前とサイトのURLは多用するので、定義しておくことをお勧めする。
※下のコードは編集できる。<かっこ自体を消して>、各自の環境に合わせて編集し、コピーされたい。
gatsby-config.js(編集可)
const siteName = `<sukiburo.dev>`
const siteUrl = `<https://sukiburo.dev>`
そして、siteMetadataでこれを使う。
gatsby-config.js
...
siteMetadata: {
...
siteName: `${siteName}`,
siteUrl: `${siteUrl}`,
},
なお、今後はgatsby-config.js
をJS
と表記する。
(ほぼ)必須プラグイン
ほぼ必須と言えるプラグイン。ないと基本死ぬ。
gatsby-source-filesystem
設定をすることで、GraphiQLのallFIle
/file
からアクセスできるようになる。基本インストール済みのはず。
設定
基本形はこのようになる。name
を設定することで、fields
で分類できるようになる。
JS
{
resolve: `gatsby-source-filesystem`,
options: {
path: `${__dirname}/content/blog`,
name: `blog`,
},
},
クエリの例である。blog
内にあるファイルのみを抽出できる。
graphql
{
allMdx(
filter: {fields: {type: {eq: "blog"}}}
) {
nodes {
id
}
}
}
最適化
gatsby-plugin-preact
Reactの軽量版であるPreactを使えるようになる。まじで簡単に軽量化できるのでお勧め。
実際にParsed size(ユーザーが実際にダウンロードするサイズ)を見比べて欲しい。もちろん前後で変えたのはPreactを導入したことだけである。

126.91kb

21.28kb
どうだろうか、サイズが1/6になっている。導入しないなんてもったいない。
インストール
BASH
npm install gatsby-plugin-preact preact preact-render-to-string
設定
JS
`gatsby-plugin-preact`,
これだけで終わる。
gatsby-plugin-preload-fonts
外部フォントを読み込んでいる人には強くお勧めするプラグイン。ページごとに使うフォントを先読みしてくれる。
インストール
BASH
npm install gatsby-plugin-preload-fonts
設定
JS
`gatsby-plugin-preload-fonts`,
package.json
に追記をする。scripts
の一番先頭に記述をする。
package.json
{
...
"scripts": {
"preload-fonts": "gatsby-preload-fonts",
...
}
}
使い方
Gatsbyを起動しているときに、別タブでBASHを開き、下のコマンドを入力する。
BASH
npm run preload-fonts

このような出力が出る。
すると、font-preload-cache.json
というファイルがルートディレクトリに作成される。これでOK。
SEO
Lighthouseで100点を取れるので、プラグイン選定には自信がある。
下の8つのプラグインとSEOコンポーネントを設定すればGoogleに愛されるサイトが出来上がる。
コードを編集可能にしているものは、適宜環境に合わせて変更して欲しい。
なお、👆プラグインの設定方法で述べたように、siteName/siteUrlを定義した方が設定は楽になる。
gatsby-plugin-canonical-urls
検索エンジンに正しいURL(http/https・wwwありなし)を伝えられる。
インストール
BASH
npm install gatsby-plugin-canonical-urls
設定
JS(編集可)
{
resolve: `gatsby-plugin-canonical-urls`,
options: {
siteUrl: `${siteUrl}`,
stripQueryString: true,
},
},
gatsby-plugin-google-gtag
gtagを挿入してくれる。gatsby-plugin-google-analytics
の代わりに使っている。
タグを複数埋めることができる。
インストール
BASH
npm install gatsby-plugin-google-gtag
設定
JS(編集可)
{
resolve: `gatsby-plugin-google-gtag`,
options: {
trackingIds: [
"G-XXXXXXXXXX", // Google Analytics / GA,
`UA-XXXXXXXXX-X`,
],
pluginConfig: {
head: true,
},
},
},
そもそも非同期で読み込まれるので、headで読み込んだ方が良い。
gatsby-plugin-offline
サイトをオフラインで動作させたり、ネットワーク接続不良に対する耐性を高めてくれる。
インストール
BASH
npm install gatsby-plugin-offline
設定
JS
`gatsby-plugin-offline`,
gatsby-plugin-manifest
PWA化してくれる。gatsby-plugin-offline
と併用する。
インストール
BASH
npm install gatsby-plugin-manifest
設定
JS(編集可)
{
resolve: `gatsby-plugin-manifest`,
options: {
name: `${siteName}`,
short_name: `${siteName}`,
start_url: `/`,
background_color: `rgb(230,235,245)`,
theme_color: `#2196f3`,
display: `minimal-ui`,
icon: `static/images/icon/icon.png`,
icon_options: {
purpose: `any maskable`,
},
icons: [
{
src: `static/images/icon/icon-512x512.png`,
sizes: `512x512`,
type: `image/png`,
},
{
src: `static/images/icon/icon-256x256.png`,
sizes: `256x256`,
type: `image/png`,
},
],
},
},
このサイトの設定をそのままのせた。色や画像のパスを変更して欲しい。
また、このサイトではアイコンを1000×1000・512×512・256×256の3種類を準備している。
gatsby-plugin-robots-txt
robots.txtを作成してくれる。
インストール
BASH
npm install gatsby-plugin-robots-txt
設定
JS(編集可)
{
resolve: 'gatsby-plugin-robots-txt',
options: {
host: `${siteUrl}`,
sitemap: `${siteUrl}/sitemap.xml`,
}
},
とりあえずHOSTとSITEMAPを設定すれば問題ない。
gatsby-plugin-react-helmet
コードをheadに挿入してくれる。主にSEOコンポーネントで使う。
インストール
BASH
npm install gatsby-plugin-react-helmet react-helmet
設定
JS
`gatsby-plugin-react-helmet`,
gatsby-plugin-sitemap
サイトマップを作成してくれる。このブログでは採用せず、自作プログラムを使っている。
インストール
BASH
npm install gatsby-plugin-sitemap
設定
JS
...
siteMetadata: {
siteUrl: `https://www.example.com`,
},
plugins: [
`gatsby-plugin-sitemap`,
]
...
siteUrlを設定しておく必要がある。
gatsby-plugin-feed-mdx
gatsby-plugin-feed
のmdxバージョン。設定は公式通りでいい?はず。(少し心配)
インストール
BASH
npm install gatsby-plugin-feed-mdx
設定
JS(編集可)
{
resolve: `gatsby-plugin-feed-mdx`,
options: {
query: `
{
site {
siteMetadata {
title
description
siteUrl
site_url: siteUrl
}
}
}
`,
feeds: [
{
serialize: ({ query: { site, allMdx } }) => {
return allMdx.edges.map(edge => {
return Object.assign({}, edge.node.frontmatter, {
description: edge.node.excerpt,
date: edge.node.frontmatter.date,
url: site.siteMetadata.siteUrl + "/blog" + edge.node.fields.slug,
guid: site.siteMetadata.siteUrl + "/blog" + edge.node.fields.slug,
custom_elements: [{ "content:encoded": edge.node.html }]
});
});
},
query: `
{
allMdx(
sort: { order: DESC, fields: [frontmatter___date] },
) {
edges {
node {
excerpt
html
fields {
slug
}
frontmatter {
title
date
}
}
}
}
}
`,
output: "/rss.xml",
title: `${siteName}`,
match: "^/blog/"
},
],
},
},
公式の設定とほとんど差はない。
画像
以下の2つは何も考えずに設定すれば大丈夫。
基本的に👇gatsby-remark-imagesに必要なプラグインと思えばいい。
gatsby-plugin-sharp
裏で画像処理をしてくれる。インストール・設定は下でしている。
gatsby-transformer-sharp
ImageSharpノードを作ってくれる。
インストール
BASH
npm install gatsby-transformer-sharp gatsby-plugin-sharp
設定
JS
`gatsby-plugin-sharp`,
`gatsby-transformer-sharp`,
スタイル関係
gatsby-plugin-styled-components
コードのスタイルをコンポーネントごとに適用できる。とっても便利。
インストール
BASH
npm install gatsby-plugin-styled-components styled-components babel-plugin-styled-components
設定
JS
`gatsby-plugin-styled-components`,
使い方
XXX.js
import styled from "styled-components"
const Main = styled.div`
margin: 30px;
`
const XXX = () => {
return (
<Main>
...
</Main>
)
}
export default XXX
この場合、<Main>...</Main>
に対してmargin: 30px;
が適応される。
gatsby-plugin-sass
sassが使えるようになる。ちなみにStyled Components内でも使える。
インストール
BASH
npm install node-sass gatsby-plugin-sass
設定
JS
`gatsby-plugin-sass`,
便利ツール
入れると便利なツール。
gatsby-plugin-remove-console
console.*をビルト時に消してくれる。
インストール
BASH
npm install gatsby-plugin-remove-console && npm install babel-plugin-transform-remove-console --save-dev
設定
JS
`gatsby-plugin-remove-console`,
gatsby-plugin-alias-imports
エイリアスを使えるようになり、パスを無駄に書く必要がなくなる。幸せになりたい人は入れよう。
XXX.js
// 導入前
import '../../components/navbar.js'
// 導入後
import '@components/navbar'
公式の例を示した。スラッシュ地獄から抜けられる。
インストール
BASH
npm install gatsby-plugin-alias-imports
設定
JS(編集可)
{
resolve: `gatsby-plugin-alias-imports`,
options: {
alias: {
"@content": "content",
"@blog": "content/blog",
"@src": "src",
"@components": "src/components",
"@functions": "src/components/functions",
"@affiliate": "src/components/affiliate",
"@amzn": "src/components/affiliate/amzn",
"@styles": "src/styles",
"@templates": "src/templates",
"@static": "static",
"@images": "static/images",
"@svg": "static/images/svg",
},
extensions: [`js`],
}
},
このブログで使っている一部を抜粋した。blogとcomponentsには設定した方がいい。
gatsby-plugin-webpack-bundle-analyser-v2
バンドルコンテンツの分析ツール。このプラグインを使って無駄なコードを見つけよう。

このような出力をしてくれる。なかなか便利だと思う。
インストール
BASH
npm install gatsby-plugin-webpack-bundle-analyser-v2 -D
設定
JS
`gatsby-plugin-webpack-bundle-analyser-v2`,
ビルト時に結果をブラウザに表示してくれる。
MD(MDX)
基本プラグイン
次のいずれかのプラグインを使うことになると思う。
以下の記事をみて、同じようなことをしたいと思ったらMDXを使えるgatsby-plugin-mdx
を使用することをお勧めする。
gatsby-transformer-remark
MDをうまいこと変換してくれる。
インストール
BASH
npm install gatsby-transformer-remark
設定
JS
{
resolve: `gatsby-transformer-remark`,
options: {
plugins: [
// 今後のプラグインはここに記述する。
],
},
},
gatsby-plugin-mdx
MDXが使えるようになる。MDXを使うなら必須。
インストール
BASH
npm install gatsby-plugin-mdx
BASH
npm install remark-unwrap-images remark-emoji
上に記述したプラグインは入れることを個人的に推奨するプラグイン。なくてもいい。
設定
JS(編集可)
{
resolve: `gatsby-plugin-mdx`,
options: {
extensions: ['.mdx', '.md'],
plugins: [
// gatsby-remark-imagesを使う場合はここにも記述
`gatsby-remark-images`,
],
remarkPlugins: [
// インストールしない場合は削除
// md(mdx)内でイメージをwrapしない
// ref: https://github.com/gatsbyjs/gatsby/issues/16239#issuecomment-594516446
require('remark-unwrap-images'),
// ex: :hand: → ✋
require(`remark-emoji`),
],
gatsbyRemarkPlugins: [
// 今後のプラグインはここに記述する。
],
},
},
なお、今後のプラグインはgatsbyRemarkPlugins
内に記述する。
gatsby-remark-autolink-headers
自動で見出しにリンクをつけてくれる。目次を作るなら入れるべき。
インストール
BASH
npm install gatsby-remark-autolink-headers
設定
JS(編集可)
{
// prismjsより前に記述
resolve: `gatsby-remark-autolink-headers`,
options: {
icon: false
},
},
アイコンはデザインが崩れるため使っていない。
gatsby-remark-check-links
リンク切れをコンソールで教えてくれる。
インストール
BASH
npm install gatsby-remark-check-links
設定
JS
// gatsby-remark-autolink-headersより後に記述
'gatsby-remark-check-links',
gatsby-remark-external-links
外部リンクを別タブで開いてくれる。
インストール
BASH
npm install gatsby-remark-external-links
設定
JS
`gatsby-remark-external-links`,
gatsby-remark-prismjs
コードのハイライトができる。
インストール
BASH
npm install gatsby-remark-prismjs
設定
JS(編集可)
{
resolve: `gatsby-remark-prismjs`,
options: {
classPrefix: `language-`,
inlineCodeMarker: null,
aliases: {},
// showLineNumbers: true,
noInlineHighlight: false,
}
},
使いたいテーマをgatsby-browser.js
で読み込む必要がある。このブログはprism-okaidia.css
をベースに手を加えている。
gatsby-browser.js
require("prismjs/themes/prism-solarizedlight.css")
他のテーマや設定などは公式サイトを確認して欲しい。
gatsby-remark-copy-linked-files
マークダウンフィルにリンクしているローカルファイルをルートディレクトリにコピーしてくれる。あんま使っていない気がする。
インストール
BASH
npm install gatsby-remark-copy-linked-files
設定
JS
{
resolve: `gatsby-remark-copy-linked-files`,
options: {
destinationDir: `static/assets`,
ignoreFileExtensions: [`png`, `jpg`, `jpeg`],
},
},
gatsby-remark-images
MD内で画像を表示するときに必要。
先に👆画像セクションで述べたように、gatsby-plugin-sharp
とgatsby-transformer-sharp
が必要になる。
また、👆先に示したように、MDXの場合は、plugins
にも入れるのを忘れないようにしたい。
インストール
BASH
npm install gatsby-remark-images
設定
JS
{
resolve: `gatsby-remark-images`,
options: {
linkImagesToOriginal: false,
maxWidth: 1350,
withWebp: true,
},
},
gatsby-remark-images-medium-zoom
画像をクリックするとアップにして表示しれくれる。

画像をタッチするとズームします。
インストール
BASH
npm install gatsby-remark-images-medium-zoom
設定
JS
`gatsby-remark-images-medium-zoom`
gatsby-remark-grid-tables
tableをいい感じに描けるようにしてくれる。なお、中身がpタグで括られるのでデザインに注意。
+-------+------------+--------+
| 12345 | こんにちは | こここ |
+=======+============+========+
| ここ1 | HelloHelloHelloHello |
+-------+------------+--------+
| 18文字ぶん入れる | 紅魔館 |
+-------+------------+ +
| 18文字ぶん入れる | |
+-------+------------+--------+
12345 | こんにちは | こここ |
---|---|---|
ここ1 | HelloHelloHelloHello | |
18文字ぶん入れる | 紅魔館 | |
18文字ぶん入れる |
インストール
BASH
npm install gatsby-remark-grid-tables
設定
JS
`gatsby-remark-grid-tables`
gatsby-remark-responsive-iframe
iframeをレスポンシブ対応にしてくれる。
インストール
BASH
npm install gatsby-remark-responsive-iframe
設定
JS
{
// responsive iframe
resolve: `gatsby-remark-responsive-iframe`,
options: {
wrapperStyle: `margin-bottom: 1.0725rem`,
},
},
gatsby-remark-smartypants
“Dumb”な引用符(真っ直ぐ)を”Smart”な引用符(カールした)に変えてくれる。(直訳
インストール
BASH
npm install gatsby-remark-smartypants
設定
JS
`gatsby-remark-smartypants`,
gatsby-remark-custom-blocks
スタイルを適用したブロックを作れる。例えばこんな感じ
[[emphasis]]
| MDXを使わなくても使える。便利。
MDXを使わなくても使える。便利。
インストール
BASH
npm install gatsby-remark-custom-blocks
設定
JS
{
resolve: `gatsby-remark-custom-blocks`,
options: {
blocks: {
danger: {
classes: `danger`,
title: `optional`,
},
},
},
},
CSS(編集可)
.custom-block {
margin: 60px 0 30px;
padding: 20px 25px;
border-radius: 5px;
}
.custom-block-heading {
position: relative;
font-size: 1.2em;
font-weight: 600;
line-height: 1.2em;
::before {
position: absolute;
display: inline-block;
top: 0;
left: 0;
font-size: 1.2em;
}
}
.custom-block-body {
margin: 10px 0 0;
p {
margin: 0;
font-size: 0.95em;
}
}
/* classesで設定した名前 */
.danger {
background: ${({ theme }) => theme.error.background};
.custom-block-heading {
color: ${({ theme }) => theme.error.mark};
}
.custom-block-body {
p {
color: ${({ theme }) => theme.error.text};
}
}
}
当サイトのdangerブロックの例を示した。色の部分は各自変更して欲しい。
こんな感じのデザインになる。
デザイン例はMDデザインのページをみて欲しい。
更なる詳しい設定方法は公式サイトをご覧いただきたい。
最後に
以上が私が使っているプラグインである。利用できそうなブラグインがあったら適宜更新し、共有しようと思う。