このブログは、Jekyllで構築してGithub Pagesでホスティングしています。先日、Jekyll + Firebase Hostingという記事を読み、Github PagesからFirebaseに移行しようか検討していて、テスト用のサイトをJekyllで作成し、Firebaseでのホスティングを試してみたので、その過程を纏めておこうと思います。
ここでは詳細は割愛します。公式サイトに従って、プロジェクトを作成します。
Firebaseコンソールにアクセスし、ブログをホスティングするためのプロジェクトを作成します。
JekyllプロジェクトとFirebaseプロジェクトの関連付け、および管理には、firebase-toolsというFirebaseがnpmとして提供しているCLIツールを使用します。
次のコマンドでインストールします。
$ npm install -g firebase-toolsJekyllプロジェクト直下で、firebase initを実行することで、
が生成されます。 これらのファイルにより、Firebaseプロジェクトと関連付けることができます。
実際は、firebase initを実行すると、firebase loginを先に実行せよ、とのメッセージが表示されます。
$ firebase init
Error: Command requires authentication, please run firebase loginしたがって、まずfirebase loginを実行します。
すると、ブラウザが起動し、Googleの認証画面が表示されるので、Googleアカウントでログインします。Firebase CLIの使用を許可すると、
✔ Success! Logged in as メールアドレスが表示され、コマンドが終了します。
次に、firebase initを実行します。
まず、「次のFirebase CLIの機能のうち、どれを使用するか?」が聞かれます。
今回は、Hostingを選択します。
次に、「どのFirebaseプロジェクトをデフォルトとして使用するか?」が聞かれます。 事前に作成しておいたFirebaseプロジェクトを選択します。
次に、「どのディレクトリを公開するか?」が聞かれます。
Jekyllはデフォルトで_siteディレクトリにビルドされるため、_siteを指定します。
次に、「SPAとして設定するか?」が聞かれます。
JekyllによるサイトはSPAではないので、Nと回答します。
事前に、jekyll buildを実行し、_siteディレクトリに404.html、index.htmlが存在する場合は、上書きするか否かを聞かれますので、Nと回答します。
すると、前述の通り、
がそれぞれ、次のような内容で生成されます。
{
"hosting": {
"public": "_site",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
}
}{
"projects": {
"default": "Firebaseプロジェクト名"
}
}Firebase Hostingについて、ここでは詳細は割愛しますが、公式サイトで、
Firebase Hosting は、ウェブアプリ向けの高速で安全性の高い静的ホスティングを提供します。
とある通り、静的なWebサイトをホスティングしてくれる機能です。
Fireabase Hostingを使って、静的サイトをホスティングするには、
の手順を踏むことになります。
前者は、今回のようにサイトをJekyllで作るので、Jekyllのコマンドで実施します。
後者は、firebase-toolsのコマンドで実施します。
Jekyllのサイトをビルドするには、
bundle exec jekyll buildを実行します。これにより、_siteディレクトリが作られ、その中にサイトのコンテンツが格納されます。
デプロイは、
firebase deployを実行します。 すると、
=== Deploying to 'プロジェクト名'...
i deploying hosting
i hosting: preparing _site directory for upload...
✔ hosting: 14 files uploaded successfully
✔ Deploy complete!
Project Console: https://console.firebase.google.com/project/[プロジェクト名]/overview
Hosting URL: https://[プロジェクト名].firebaseapp.comという出力が得られます。
そこで、実際にhttps://[プロジェクト名].firebaseapp.comにアクセスすると、
おおおお、サイトが公開されました。
Firebase Hostingを使用して公開したサイトを停止するには、
firebase hosting:disableを実行します。
すると、
? Are you sure you want to disable Firebase Hosting?
This will immediately make your site inaccessible! Yes
✔ Hosting has been disabled for [プロジェクト名]. Deploy a new version to re-enable.と出力され、数分すると以下のページが表示されるようになり、アクセスできなくなります。

この後、再度firebase deployを実行すると、新しいバージョンとしてコンテンツがアップロードされ、
再びアクセスできるようになります。
Firebase Hostingでは、デフォルトでhttps://[プロジェクト名].firebaseapp.comというURLでサイトが公開されます。
これをカスタムドメインで公開することも可能で、かつSSLも有効になります。
Jekyllで構築したブログをFirebase Hostingでホスティングする方法について纏めました。 今回は、Jekyllなサイトを対象としましたが、例えばVue.jsや、Nuxtで 構築したアプリケーションをホスティングするのも簡単にできそうです。