自己紹介サイトをNuxt.js 2.9.1 + Vuetify 2.0.xに更新したときの備忘録

猛暑にめげそうだった小語アコだよ、こんばんは。過去に自己紹介サイトを作ったときのことを書いたけど、今回はその続編!

このサイトを作るために使っているNuxt.jsの 2.9 がおととい、Vuetify 2系が7月末にリリースされていたので更新してみました!どちらも公式が公開しているマイグレーションガイド通りにやっていけばスムーズに移行できるから便利だね~。

まずはNuxt.js。私はTypeScriptを使っている(動的型付けが苦手……)からTypeScriptのドキュメントを参考にしました。

nuxt.config.tsにしている場合は@nuxt/typescript-runtimeとnuxt-tsを利用することも忘れずに!以上!やはい!

続いてVuetify!アルカディアが待っていると信じていざー!

1. npm uninstall vuetify stylus stylus-loader
2. npm i -D @nuxtjs/vuetify
3. tsconfig.jsonのtypesプロパティに"@nuxtjs/vuetify"を追加
4. plugins/vuetify.tsで設定していた値をnuxt.config.tsに移植
5. plugins/vuetify.ts削除
6. スタイルファイル.stylを.scssに移行
7. 描画調整(テキストサイズ、footerなど)

Vuetify 2からはstylusではなくsassになったので、まずはstylus系の依存を削除します。そして、Vuetifyを更新…してもいいのですが、Nuxt.jsを使っているのでコミュニティが公開しているNuxt.js用のVuetifyモジュールを導入します。@nuxtjs/vuetifyにはVuetify本体を含む必要なパッケージが依存関係に含まれているので、これひとつをインストールしてしまえばOK!

お次はTypeScript上で型定義を使いたいのでtsconfig.jsonを編集します。

// tsconfig.json
{
  ...,

  "types": [
    ...,
    "@nuxtjs/vuetify"
}

そしてnuxt.config.tsを編集!移行前はこんな感じでした。

// before: nuxt.config.ts
import NuxtConfiguration from "@nuxt/config";

...

const config: NuxtConfiguration = {

...

css: ["~/assets/style/app.styl"],
plugins: ["~/plugins/vuetify"],

...

これを書き換えます。

// after: nuxt.config.ts
import {Configuration} from "@nuxt/types";

...

// themesでcolorsを使いたいならimportしておこう
import colors from "vuetify/es5/util/colors";

const config: Configuration = {

...

css: [],
plugins: [],
buildModules: [

   ...,

   "@nuxtjs/vuetify"
 ],
 vuetify: {
   customVariables: ["~/assets/variables.scss"],
   theme: {
     themes: {

       ...

     }
   }
 },

...

Vuetifyのsassの設定を変更するためのファイルをvuetifyプロパティのcustomVariablesで設定するようにします。あと、pluginで設定していたthemeなどの設定もここで行うようにしました。結果、cssとpluginsで設定していたファイルは不要になるので削除。あ、もちろんファイルを削除する前にstylusからsassに設定を移植してね!

最後に描画結果を微調整。私の自己紹介サイトの場合だとCardのテキストサイズとfooterのテキスト表示位置がずれていたので調整しました!

これで以上だけど、1点だけ注意点。@nuxtjs/vuetifyはtreeShakeというオプションが用意されているけど、これがtrueになっていないと用意したvariables.scssが組み込まれていないことがあるから注意!常時trueにしておくと開発中のビルドに時間がかかっちゃうから、最終確認段階でNODE_ENVをproductionに設定してビルドするのがいいんじゃないかな?詳細は以下のリンクから辿ってみよう!

これにて移行終わり!引き続き快適Nuxt.js + Vuetify開発をやっていきましょー!

この記事が気に入ったらサポートをしてみませんか?