Gatsby
はReact
用の非常に人気の高い静的サイトジェネレータです。
Next.js
(SSR
寄り)を使っているとどうしてもGatsby
も試してみたくなります。
スター数ではNext.js
の方が多いですがUsed by
で見るとGatsby
の方が倍以上使われてるんですよね。
WordPress
の代替を探していることもあり、Gatsby
とNetlify CMS
で管理するブログを試してみます。
用語・略語:CMS:コンテンツマネジメントシステムSSG:静的サイトジェネレータ
GatsbyJS
とりあえずCLI
をインストール。
1 |
npm install -g gatsby-cli |
続いてサイトを作成します。
1から書いてもいいんですが現在358もスターターが登録されてます。
こちらからスターターを選んで使ってみましょう。
1 2 3 |
gatsby new [サイト名] ([スターター]) gatsby new gatsby-blog https://github.com/TryGhost/gatsby-starter-ghost gatsby new gatsby-blog https://github.com/gatsbyjs/gatsby-starter-blog |
パッケージマネージャーにnpm
かyarn
かと聞かれます。
今回は普段使ってるyarn
で。
最初は見た目だけでghost
を選びましたが、よく見るとHeadless CMS "Ghost"
用のスターターでした。説明はちゃんと読まないと…。
今回はテストがてらなので1番人気のスターターにしました。
準備が出来たら開発モードで動かしてみましょう。
1 2 |
cd gatsby-blog gatsby develop |
デフォルトだと以下のアドレスで実行結果を確認できます。
-
HP:http://localhost:8000/
-
DB:http://localhost:8000/___graphql
記事を追加するにはcontent/blog/
にマークダウン形式のファイルを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 |
--- title: Test Page date: "2020-06-19T22:12:03.284Z" description: "This is test page" --- # This is test page ``` gatsby build gatsby serve ``` |
ホットリロードされるので手軽に編集出来ます。
開発が済んだらビルドしましょう。
build
でpublic/
に静的ファイルが作成されます。
serve
コマンドでbuild
した内容の確認もできます。
1 2 |
gatsby build gatsby serve |
基本的な動きはこんな感じか。コマンドがわかりやすくていいですね。
Netlify CMS
途中で触れたGhost
と同じセルフホスティング型のヘッドレスCMS
です。
なんでNetlify
かというとSSG
向けのCMS
だからです。Gatsby
と相性がいい。
アカウントはEmail
でも作れますが、どうせ連携に使うのでGitHub / GitLab / Bitbucket
でサインアップするといいです。
gatsby
でnetlify-cms
用のスターターを使ってGithub
に上げます。
1 |
gatsby new gatsby-netlify https://github.com/netlify-templates/gatsby-starter-netlify-cms |
Netlify
でNew site from Git
からスターターのリポジトリを選択して、案内通りにポチポチしていればxxxx.netlify.app
というアドレスで閲覧可能になります。
「Settings
」→「Identity
」を開いて「Enable Identity
」した後、下まで スクロールして「Enable Git Gateway
」します。
その後、xxxx.netlify.app/admin
にアクセスするとログイン可能になるのでサインアップしてメール認証をすることで、よく見るような管理者ページが開けます。
ここで編集してPublish
することでGit
がPush
されページ自体も更新されます。
ちなみにこのままだと誰でもユーザー登録できてしまうのでNetlify
に戻って設定をしておきます。
所感
Gatsby
は触りだけでプラグインやテーマもいじっていないのでNext.js
と比べて評価できないけど、SSG
に絞っているのは思ったより気が楽でいいかもしれない。
CMS
は現状だと設定が面倒な割に.md
ファイルをブラウザで書いてるだけだから利点を感じにくい。public/
をそのままGitHub Pages
に入れた方が楽な気すらする。
ソースコード(リポジトリ)をプライベートにできるのは多少利点か。
Netlify
は連携が強みっぽいのでLambda
連携などしてSSG
の手が届かないところを補う形で運用できればいい感じになりそう。