Gatsby + Firebase Hostingでプロフィールサイトを構築する
·2 分で読めます
GatsbyとFirebase Hostingを使って自分のプロフィールサイトを構築したのでそのメモ。
前提
- サイトの中身はGitHubリポジトリで管理
- https://github.com/santosfrancisco/gatsby-starter-cvがプロフィールサイト向けだったのでこれを使った
- GitHub Actionsでmasterブランチにpushされたら自動的にFirebase Hostingに反映されるようにした
- 今回は一つのGitHubリポジトリで複数のサイトをホスティングしたかったので、サブディレクトリを作成した。以下のような構成になっている。
- lampetty-net-sites (リポジトリルート)
- www (今回構築するプロフィールサイト)
- xyz (別のサイト)
- lampetty-net-sites (リポジトリルート)
準備
- GitHubリポジトリを作っておく
- NodeJSをインストールしておく
Quick Start | Gatsbyに沿って以下を実行する。
(on repository root)
npm install -g gatsby-cli
gatsby new www https://github.com/santosfrancisco/gatsby-starter-cvこれで www ディレクトリ配下にサイトの静的ファイルが生成される。次にこれをFirebase Hostingにデプロイする。
Firebase Hostingのセットアップ
- プロジェクト作成する
- Firebase Hosting の設定を行う
- 公式ドキュメントに沿ってやればOK
(on repository root)
npm install -g firebase-tools
firebase login
firebase init今回は一つのリポジトリと一つのFirebaseプロジェクトで複数のサイトのファイルをホスティングしたかったので、以下のファイルを作成した。
https://firebase.google.com/docs/hosting/multisites に沿ってFirebaseの設定を行い、以下のようなファイルを作成した。
firebase target:apply hosting www lampetty-net-sitesfirebase.json
{
"hosting": [
{
"target": "www",
"public": "www/public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
}
]
}.firebaserc
{
"projects": {
"default": "<PROJECT_NAME>"
},
"targets": {
"<RESOURCE_NAME>": {
"hosting": {
"www": [
"<RESOURCE_NAME>"
]
}
}
}
}最終的にデプロイは以下のように行う。
firebase deploy --only hosting:wwwGitHub Actionsの設定
以下のような感じでnode_modules配下をキャッシュすることでビルド時間を短縮している。
まとめ
静的サイトを構築するのは簡単
Firebaseによるサーバーレスシングルページアプリケーション (技術の泉シリーズ(NextPublishing))
- 作者:小島 佑一
- 発売日: 2019/05/24
- メディア: Kindle版