- Nuxt.jsですでに何かしらの成果物を作成しているのが前提
- Nuxt.jsでWebアプリケーションを作成しようという記事ではなく、タイトル通りGitHub.ioにGit経由で、 既に作成済みのNuxt.jsアプリをデプロイする手順を記載した記事となっている
Nuxt.jsについて
- Nuxt.jsはサーバのフレームワークなどWebアプリケーション開発に必要な物を一括で最初に取得できる
- SSR(Server Side Rendering:サーバ側でHTML生成を行う)やPWA(Progressive Web Apps:スタンドアロンなアプリにも対応できる)なWebサイトも構築可能
- 似た機能にVue-cliがあるが、こっちは最低限の設定(情報)でSPA構築ができ、必要に応じてサーバ用の設定等をするイメージ
導入方法
npx create-nuxt-app [プロジェクト名]
npx
はnpmのコマンド、yarnを使っている場合は使えない
- 対話形式で使用するフレームワーク等を求められるので適宜答える
npm run dev
[プロジェクト名]
のディレクトリが作成する- 動作を確認する。デフォルトは
localhost:3000
でサーバが建つのでそこにアクセスする
プロジェクトのファイル構成
使用したフレームワークによって多少の差異がでるが、一般的に下記のような構成になる
- .nuxt :
npm run dev
で生成されるファイル群 - static : アプリケーションで使用する素材(画像等)を置く
- ここに置かれたファイルをwebpackのコンパイラの対象にならない
- assets : アプリケーションで使用する素材(画像等)を置く
- 逆にここに置かれたファイルでwebpackのコンパイラの対象になる
- 容量の大きいファイルはここに置くといい?
- components
- dist : デプロイ用のファイル群
npm run generate
で作成される
- layouts : pages内のVueファイルに追加するコンポーネント(ヘッダー等)のVueファイル
- middleware
- pages :
index.vue
筆頭にメインのコンテンツのページを作成する - plugins
- .nuxt :
- server : バックエンド側の処理を書くフォルダ
ルーティングの実装
- ルーティングは
pages
ディレクトリを参照して動的に生成されるので、
ページのどこにそのリンクを貼るかだけを設定すればよい <nuxt-link to="path">
で設定可能。Vuetifyの場合はnuxt
属性をtrueにする下記はVuetifyのv-btn要素にルーティング処理をハンドルさせた例
pagesディレクトリの構成
index.vue linkPages/ -- linkPageA.vue
- index.vue(pugで記述)
v-btn(text color="green" outlined coler="green" to="/linkPages/linkPageA" nuxt) To PageA
GitHubPagesのデプロイ
参考ページ
- GitHub Pages のユーザーサイトに Nuxt.js で作成したプロジェクトをデプロイする
- Nuxt.js — gh-pages deployment
- 2つ目のサイトはリポジトリページ(
gh-pages
)へのデプロイ方法だが、ユーザページにも当てはまる事があるため参考にさせて頂きました
- 2つ目のサイトはリポジトリページ(
注意点としてGitHubPagesはユーザページとリポジトリページに2種類がある
以下手順
- 開発環境構築
- デプロイ(初回のみ)
npm i push-dir -D
master
ブランチにdist/
のみをpushするのに使うパッケージのインストール
- package.jsonのscriptsに
"deploy": "push-dir --dir=dist --branch=master --cleanup"
を追記- これで
deploy
コマンドがdist/
以下をmaster
に反映させる処理になる
- これで
- ローカルの
master
を削除する- リモートの
master
との整合性を保つため
- リモートの
touch .nojekyll
でファイル作成し、git add>git commit
- デプロイ(毎回)
npm run generate
- これで
dist/
が作成(更新)される
- これで
npm run deploy
- エラーが出る場合、作業用ブランチが最新でない可能性があるのでcommitしておく
- もしくは未commitのファイルがあるパターン。これはさっさとcommitしてpushする
github.com/<ユーザ名>/<ユーザ名>.github.io
にアクセスして変更内容が反映されているか確認- 反映されるまで時間がかかることができる