始めに
Nuxtはnuxt generateで静的ファイルを出力するためGitHub Pagesに配置できると思っていたのですが、意外とつまってしまったのでそれに関して記事にしました。
※バージョンによって挙動が違う気がするので注意してください。僕が試したときはNuxtのバージョンはv2.8.1でした。
結論
先に結論を言うと、gh-pagesモジュールでpushする場合はgh-pages -d dist -tにして、-tオプションをいれたら動きました。
背景と原因
基本的にGitHub Pagesのデプロイは以下のサイトを参考にしていました。
ビルドの設定は問題なかったのですが、デプロイの方でいつも使っているgh-pagesにしたことで問題が起きました。具体的にはデプロイ先にアクセスすると生成された_nuxtディレクトリ以下のファイルをみてくれませんでした。
どうやらGitHub Pagesは_が先頭についているものは無視されてしまうようで、.nojekyllを配置しないといけないようでした。
NuxtプロジェクトをそのままGitHub Pagesに上げると_nuxt配下が404になる
ただ疑問なのはnuxt generateで生成されたファイルには.nojekyllがちゃんと入っており、これがpushされていれば何の問題もなかったのですが、なぜかpushされていませんでした。gh-pages側がドットファイルのpushをスキップしているようです。このドットファイルを含めてpushする方法がなかなか見つからず困っていましたが、どうやら-tオプションをつけるとやってくれるようです。(yarn gh-pages -hでコマンドを確認すると普通に載ってました)
gh-pages with static html can't access file when it exists
終わりに
.nojekyllがないから動かないという記事はよく見かけたのですが、gh-pagesでpushする方法に関する記事は見つからなかったので記事にしました。誰かの役に立てれば幸いです。