Gatsbyのtheme plugin作成のためのセットアップ
Gatsbyのtheme pluginを作成する時のセットアップ手順をまとめました。公式で紹介されている方法の方が後々便利かもしれませんが、とりあえずtheme作ってみたい人にはこういった方法があるよ!という感じの手順です。
yarnのworkspace機能を使用する
theme pluginを実際のGatsbyプロジェクトで読み込みながら開発するためにyarnのworkspaceという機能を使用します。これはnpmにはありませんのでyarnをインストールして進んでください。
ルートプロジェクトのセットアップ
まず空のフォルダでpackage.jsonを作成するために初期化を行います。
yarn init -y
package.jsonの内容を必要な情報に書き換えてください。workspaces機能を使用するためprivateは必須となります。
{
"name": "gatsby-theme-sample-root",
"version": "0.0.1",
"main": "index.js",
"license": "MIT",
"author": "",
"private": true,
"workspaces": [
"site",
"gatsby-theme-sample"
]
}
theme plugin作成環境とtheme pluginテスト環境の作成
上記のpackage.jsonではworkspacesにsiteとpackagesを設定しました。siteがtheme pluginのテスト環境でpackages配下には作成するtheme pluginのプロジェクトを設置します。
下記のようにフォルダを構築します。作成するthemeの名前はgatsby-theme-sampleとします。
.
├── gatsby-theme-sample
└── package.json
フォルダを作成したらworkspacesの設定を書いたpackage.jsonがある階層で次のコマンドを打ちます
cd gatsby-theme-sample
yarn init -y
これでthemeの作成環境にpackage.jsonが配置されます。
.
├── gatsby-theme-sample
│ └── package.json
└── package.json
themeの開発時はworkspaceからライブラリの追加や削除などを行います。gatsbyなど最低限のライブラリを導入します。
yarn workspace gatsby-theme-sample add react react-dom gatsby
theme pluginテスト環境の作成
次にtheme pluginをテストする環境を作成します。公式のGatsby Starterをそのまま持ってくるのが速いです。workspaceのpackage.jsonがある階層で下記のコマンドを打ちます。
gatsby new site https://github.com/gatsbyjs/gatsby-starter-hello-world
siteフォルダ内にHello Worldが表示されるプロジェクトが展開されるます。このプロジェクトのpackage.jsonのnameをworkspaceで指定した名前に変更します
{
"name": "site",
// ... 省略
gatsby-config.jsで作成するpluginを読み込みます。
// gatsby-config.js
module.exports = {
plugins: [`gatsby-theme-sample`]
}
開発環境を立ち上げます。
yarn workspace site develop
hello worldページが表示されます。
theme pluginにaboutページを追加する
siteプロジェクトにはindex以外のページはありません。/aboutにアクセスすると404になります。siteページ内にaboutページを追加すると表示されますが、gatsby-theme-sampleで実装すればそれを読み込んでいるsiteプロジェクトでも/aboutページが追加されます。gatsby-theme-sample階層にaboutページを追加します。
.
├── gatsby-theme-sample
│ ├── index.js
│ ├── package.json
│ └── src
│ └── pages
│ └── about.js
// about.js
import React from "react"
export default function Home() {
return <div>About</div>
}
/aboutにアクセスするとAboutと表示されるはずです。これでtheme pluginの開発環境のセットアップが完了です。あとはgatsby-theme-sampleに機能を追加して、siteでその機能が有効になっているのかを確認しながら開発できます。