【Nuxt.js Universal】Vuetify2.0にバージョンアップしよう
  • 2019.08.25に公開
  • 2019.10.12に更新
  • ブログ構築
  • 4. Contentfulのセットアップ
  • No.1 / 4
「ブログ構築」では、Nuxt.js v2.14未満が使用されています。 Nuxt.jsはv2.13~14で大きなバージョンアップがありました。それに伴い、書き方も大きく変化しています。 v2.14以上で書かれた「ブログ構築」の続編は、カテゴリー「 ブログ構築TS 」 で公開しています。

今回達成すること

Vuetify1.5から、Vuetify2.0にバージョンアップしていきます。

ついでに本番環境で重くなるコードや、不要なVuetify関連のファイルを全て削除していきます。

ここで記載するバージョンアップ方法は、Nuxtアプリ作成時に導入したVuetifyをバージョンアップする手順となります。

公式のバージョンアップ手順はここにあります。

https://github.com/nuxt-community/vuetify-module/blob/HEAD/MIGRATION_GUIDE.md

現状のVuetify

yarn create nuxt-appで導入したVuetifyはバージョン1.5になります。

$ yarn list vuetify

└─ vuetify@1.5.16

Vuetify1.5はドキュメントが充実しているにも関わらず、検索フォームがないので情報が探しづらい。。。

また、Google上で検索してもVuetify2.0の情報が一番に出てきますので、バージョン1.5の情報にたどり着きにくい状況です。

今から開発を始める場合には、Vuetify1.5はおすすめしません。

既存のVuetify関連ファイルを全て削除する

まず"@nuxtjs/vuetify": "0.5.5"モジュールを削除します。

$ yarn remove @nuxtjs/vuetify

不要なファイル群の削除

assets/styleディレクトリにあるapp.stylvariables.stylを削除します。

assets
 L style
   L app.styl  			// 削除
   L variables.styl  // 削除

headプロパティのGoogleFontを削除

@nuxtjs/vuetifyでは、GoogleFontのダウンロードリンクがセットされます。

よって、自ら設定する必要はありません。

nuxt.config.jsを開いてheadの中のGoogleFontを削除します。

{
  head: {
  ...
  // 削除
  // {
  //   rel: 'stylesheet',
  //   href:
  //     'https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons'
  //  }
  }
}

Vuetifyページを削除

今現在、"http://localhost:3000/inspire"にアクセスするとVuetifyのロゴが表示されると思います。

これは、アプリ作成時に自動で作られたファイルなので不要です。

pagesディレクトリのinspire.vueを削除してください。

pages
 L inspire.vue		// 削除

新たにVuetify2モジュールをインストールする

それではVuetifyモジュールを導入しましょう。

$ yarn add @nuxtjs/vuetify -D

Vuetify2.0がインストールされたか確認してみましょう。

$ yarn list vuetify

└─ vuetify@2.0.10

これでOKですね。

Vuetify2にFontAwesomeをインストールする

FontAwesomeも導入しましょう。

下のページと全く同じ内容なので、ざっくりと説明しますね。

NuxtにVuetify2を導入してFontAwesomeもインストールするぜ

  • まずモジュールをインストールして、
$ yarn add @fortawesome/fontawesome-free -D
  • vuetify.jsファイルを作成して、
plugins/vuetify.js
import '@fortawesome/fontawesome-free/css/all.css'
import Vue from 'vue'
import Vuetify from 'vuetify/lib'

Vue.use(Vuetify)

export default new Vuetify({
  icons: {
    iconfont: 'fa'
  }
})
  • nuxt.config.jsにpluginsファイルを読み込むように設定します。
nuxt.config.js
{
  ...
  plugins: [
    'plugins/vuetify'
  ],
  ...
}

ここからがUniversalモードの一手間

今のままvuetify.jsを読み込むとビルド時にエラーになります。

SPAモードの場合はこれだけで使えるんですけどね。

nuxt.config.jsbuildに依存関係をBabelで変換するtranspileプロパティを付け加えます。

API: build プロパティ#transpile - Nuxt.js

nuxt.config.js
{
  ...
  build: {
    transpile: ['vuetify/lib'],	// 追記
    extend(config, ctx) {}
  }
}

Babelとは、JavaScriptのコードを新しい書き方から古い書き方へと変換するツールのことのようです。

【5分でなんとなく理解!】Babel入門 - Qiita

SPAモードはブラウザ上で実行するので、わざわざコードを変換しなくてもエラーを吐き出さないのかな?

その代わり稼働がブラウザに依存する、と言う理解で良いと思います。(自信無し)

FontAwesomeが使えるか確認する

さあ、ここまできたらFontAwesomeが使えるか確認しましょう。

index.vueにiconを追加してください。

<template>
  ...
  <v-icon>fas fa-lock</v-icon>
  ...
</template>

Nuxtを起動して"http://localhost:3000/"にアクセスしましょう。

$ yarn dev

2019-08-24 17-08-09

OK!! iconが表示されていますね。

Vuetify2にオリジナルの色を追加する

Vuetify1.xと少し書き方が変わりました。

https://vuetifyjs.com/ja/customization/theme

nuxt.config.jsvuetify部分を以下のように変更してください。

今回はTwitterとfacebookとbackgroundの3つのカラーを追加しました。

nuxt.config.js
import colors from 'vuetify/es5/util/colors' // このimport文がなければエラーになります
{
 ...
 vuetify: {
    theme: {
      themes: {
        light: {
          primary: colors.blue.darken2,
          accent: colors.grey.darken3,
          secondary: colors.amber.darken3,
          info: colors.teal.lighten1,
          warning: colors.amber.base,
          error: colors.deepOrange.accent4,
          success: colors.green.accent3,
          twitter: '#55acee',
          facebook: '#3b5998',
          background: colors.grey.lighten5
        }
      }
    }
  },
  ...
}

試しに、index.vueにTwitterアイコンをTwitterカラーで表示してみましょう。

pages/index.vue
<template>
...
  <v-icon
   color="twitter"
  >
     fab fa-twitter
  </v-icon>
...
</template>

ESLintのルールを変更する(必要であれば)

ルートディレクトリ直下の.eslintrc.jsに独自のルールを追加します。

.eslintrc.js
...
	rules: {
    "no-console": "warn", // console.log "error", "warn", "off"
    "no-trailing-spaces": "warn" // 行の末尾の空白
  }
}

上のコードは

  • console.log()をエラーから注意喚起にする
  • 行の末尾の空白をエラーから注意喚起にする

と言う設定になります。

warn (注意喚起)でも煩わしい方は、offにして完全にエラーを出さない設定にもできます。

その他のESLintカスタマイズはここから見れますよ。

List of available rules - ESLint - Pluggable JavaScript linter

先にこの記事に目を通すと良いかもです。

ESLintのルールを全部手動で設定するのは大変だからやめておけ - Qiita

Phshして本番環境でも確認しよう

さあ、ここまできたらBitbucketにPushしましょう。

$ git add -A
$ git commit -m "Vuetify2_versionUp"
$ git push

Netlifyの管理画面にアクセスすると、先ほどのPushが自動的にデプロイされます。

2019-08-25 17-28-20

BuildingからPublishedに切り替わったら本番環境のURLへアクセスしてみましょう。

Vuetify2のFontAwesomeのアイコンが表示されていたら成功です!

終わりに

FontAwesomeのiconがニュルッと表示されるのが気になるな。。。

今の所解決策が見当たりません。:confounded: すみません。

さて次回は、Contentfulにブログ記事を管理・作成するプロジェクトを作成していきます。

やっとここまできました。

あなたの力になれること
私自身が独学でプログラミングを勉強してきたので、一人で学び続ける苦しみは痛いほど分かります。そこで、当時の私がこんなのあったら良いのにな、と思っていたサービスを立ち上げました。周りに質問できる人がいない、答えの調べ方が分からない、ここを聞きたいだけなのにスクールは高額すぎる。そんな方に向けた単発・短期間メンターサービスを行っています。
独学プログラマのサービス
ブログ構築の投稿
1
  • 更新情報
  • /
  • #01
ブログ構築カテゴリーの記事修正、更新情報【2020/05/19追記: このカテゴリーの更新を一旦終了といたします】
2
  • 更新情報
  • /
  • #02
Nuxt.js v2.13.0新機能メモの公開とv2.12.2にダウングレードする方法
1
  • 今回作るアプリケーション
  • /
  • #01
Nuxt.jsとContentfulで作るマイブログ
1
  • 開発環境にNuxt.jsを立ち上げる
  • /
  • #01
Nuxt.jsを動かす環境を構築する
2
  • 開発環境にNuxt.jsを立ち上げる
  • /
  • #02
Nuxt.jsのプロジェクトを作成する
3
  • 開発環境にNuxt.jsを立ち上げる
  • /
  • #03
Hello Nuxtを表示する
1
  • Nuxt.jsアプリを公開する
  • /
  • #01
Nuxt.jsをデプロイする前の事前準備を行う
2
  • Nuxt.jsアプリを公開する
  • /
  • #02
Netlifyの初期セットアップとNuxt.jsのデプロイを行う
3
  • Nuxt.jsアプリを公開する
  • /
  • #03
NetlifyにデプロイしたNuxt.jsに独自ドメインを設定する
1
  • Contentfulのセットアップ
  • /
  • #01
【Nuxt.js Universal】Vuetify2.0にバージョンアップしよう
2
  • Contentfulのセットアップ
  • /
  • #02
【画像で説明】Contentfulの使い方。初期設定と各メニューについて学ぶ
3
  • Contentfulのセットアップ
  • /
  • #03
Contentfulにブログ記事モデルを作成していこう
4
  • Contentfulのセットアップ
  • /
  • #04
ContentfulからAPIを取得してNuxt.jsで記事一覧を表示する
1
  • ブログ記事周りの構築
  • /
  • #01
Nuxt.jsにContentfulのブログ記事を表示する
2
  • ブログ記事周りの構築
  • /
  • #02
Contentfulから取得した下書き記事を開発環境に表示する
3
  • ブログ記事周りの構築
  • /
  • #03
Nuxt.jsのgenerateプロパティに動的なルーティングを追加する
4
  • ブログ記事周りの構築
  • /
  • #04
【Nuxt.js】middlewareを活用しブログ記事取得のパフォーマンスを改善する
1
  • カテゴリーページの構築
  • /
  • #01
【Contentful】カテゴリーモデルとブログ記事モデルの関連付け
2
  • カテゴリーページの構築
  • /
  • #02
【Nuxt.js × Contentful】ブログ記事に関連付くカテゴリーを表示する
3
  • カテゴリーページの構築
  • /
  • #03
【Nuxt.js × Contentful】カテゴリー記事一覧ページを作成する
1
  • タグ機能の構築
  • /
  • #01
Contentfulにタグモデルを作成し関連付けを行う
2
  • タグ機能の構築
  • /
  • #02
【Nuxt.js × Contentful】タグに関連付いたブログ記事を表示する
3
  • タグ機能の構築
  • /
  • #03
Contentfulのincludesを使って関連モデルを取得しタグ一覧ページを作成する
4
  • タグ機能の構築
  • /
  • #04
Vuetify2のdata-tableの使い方を学んで、タグ一覧ページをレイアウト
1
  • Nuxt.jsブログカスタマイズ
  • /
  • #01
Twitterシェアボタン、フォローボタンの作り方【Nuxt.js Universalモード編】
2
  • Nuxt.jsブログカスタマイズ
  • /
  • #02
Contentfulの全文検索を使ったNuxt.jsブログ内検索の実装
独学プログラマ
独学でも、ここまでできるってよ。
CONTACT
Nuxt.js制作のご依頼は下記メールアドレスまでお送りください。