Nuxt.js と Firebase で Single Page Application を作成するチュートリアル。
ツール
Nuxt.js
サーバーサイドレンダリングする Vue.js アプリケーションを簡単に作ることができるフレームワーク。
Vue.js を直接使うよりNuxt.js で開発したほうが、短時間でパフォーマンスの高いサイトが作れるとのこと。
Firebase
Firebase Hosting は静的ファイルのホスティングサービス。
無料枠に Spark プランというのがあり、下記の条件までなら無料で使える。
- データ容量 : 5G
- データ転送量 : 1G/日
- アップロード操作 : 20,000回/日
- ダウンロード操作 : 50,000回/日
チュートリアル
Nuxt.jsとFirebaseを使って簡単なWebサービスを作る<導入編>を参考に。
準備
npm パッケージマネージャーをインストール。 JS 系はこいつで管理する。
$ brew install npm $ npm -v 6.4.1
Vue CLI をインストール。
$ npm install -g @vue/cli @vue/cli-init $ vue --version 3.0.4
Nuxt.js のプロジェクトを作成
Nuxt.js テンプレートを利用する。プロジェクト名は「nuxt-sample」。
$ vue init nuxt-community/starter-template nuxt-sample
中身を見てみる。このままインストールを行えば、 Nuxt の ver2 が入るようだ。
$ cat nuxt-sample/package.json
{
"name": "nuxt-sample",
"version": "1.0.0",
"description": "nuxt-sample",
"author": "runble1",
"private": true,
"scripts": {
"dev": "nuxt",
"build": "nuxt build",
"start": "nuxt start",
"generate": "nuxt generate",
"lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
"precommit": "npm run lint"
},
"dependencies": {
"nuxt": "^2.0.0"
},
"devDependencies": {
"babel-eslint": "^8.2.1",
"eslint": "^4.15.0",
"eslint-friendly-formatter": "^3.0.0",
"eslint-loader": "^1.7.1",
"eslint-plugin-vue": "^4.0.0"
}
}
問題ない場合は、下記コマンドでインストールする。
$ cd nuxt-sample $ npm install
ローカル PC上でアプリを立ち上げてみる。
$ npm run dev
ここでエラーが発生した。
TypeError: Cannot read property 'eslint' of undefined
at Object.module.exports (/Users/runble1/work/nuxt-sample/node_modules/eslint-loader/index.js:148:18)
NuxtのESLintのエラー対応 を参考に修正する。
$ vim nuxt.config.js
build: の部分を下記に修正。
build: {
/*
** Run ESLint on save
*/
extend(config) {
if (process.server && process.browser) {
config.module.rules.push({
enforce: 'pre',
test: /\.(js|vue)$/,
loader: 'eslint-loader',
exclude: /(node_modules)/
})
}
}
}
再度立ち上げなおす。
$ npm run dev
下記 URL にアクセスできたら完了。
Firebase Hosting のプロジェクトを作成
下記 URL からアクセス。GCPコンソールにリンクはなかった。
- https://console.firebase.google.com/ へアクセス
- スタートガイド
- プロジェクトを追加
- プロジェクト名を入力、規約に同意
- プロジェクトの作成
- 完了画面で「次へ」を押す
- Firebase の管理画面に遷移される
Nuxt.js のプロジェクトを Firabase Hosting にデプロイ
Firebase CLI をインストール。
$ cd nuxt-sample $ npm install -g firebase-tools
ターミナル上で Firebase にログイン。
$ firebase login
ブラウザ側で認証画面が表示されるため、認証する。
Firebase のホスティング初期設定を行う。
$ firebase init hosting
以下の質問されるので答えていく。この質問で答えた値は .firebaserc と firebase.json というファイルに保存されているので、あとで修正が可能。
- ? Select a default Firebase project for this directory:
→自分のプロジェクトを選択 - ? What do you want to use as your public directory?
→dist - ? Configure as a single-page app (rewrite all urls to /index.html)?
→No
dist ディレクトリは一旦削除。
$ rm -rf dist/
nuxt を spa モードでビルドする。
$ vim nuxt.config.js
mode: ‘spa’ を追記。
module.exports = {
mode: 'spa',
Nuxt.js のプロジェクトをビルド。
$ npm run build
Firebase にデプロイ。
$ firebase deploy === Deploying to 'nuxt-sample-c1f33'... i deploying hosting i hosting[nuxt-sample-c1f33]: beginning deploy... i hosting[nuxt-sample-c1f33]: found 9 files in dist ✔ hosting[nuxt-sample-c1f33]: file upload complete i hosting[nuxt-sample-c1f33]: finalizing version... ✔ hosting[nuxt-sample-c1f33]: version finalized i hosting[nuxt-sample-c1f33]: releasing new version... ✔ hosting[nuxt-sample-c1f33]: release complete ✔ Deploy complete! Project Console: https://console.firebase.google.com/project/nuxt-sample-c1f33/overview Hosting URL: https://nuxt-sample-c1f33.firebaseapp.com
https://nuxt-sample-c1f33.firebaseapp.com へアクセスすると、公開されてる。

コメント