目次
はじめるにあたって
ひさびさの更新になります。
Vue CLIがかなり進化してきてNuxt.js使わなくてもけっこういけるようになったなと思ってます。
とはいえ状況によってはやっぱSSRが必要になることもあったり規約というかルールを作っておいた方が何かといいよねっていうことは考えられますので、そういうときはさくっとNuxt.jsを選択してます。
最近だとほとんどの場合、すっかりTypeScirptを使っていますのでNuxt.jsでもTypeScriptで書きたいわけですがバージョンによって設定方法が変わってしまってうまくいかないことが多いです。
ひとまずNuxt.jsの最新はNuxt.jsの日本語サイトだと2.8.Xってなってますが https://ja.nuxtjs.org 英語だと https://nuxtjs.org 2.9.Xになってます。Yarnやnpmでなにも考えずにインストールするとv2.9.1(2019/8/29時点)です。
v2.9.0になってからオフィシャルドキュメント、ガイドもできたようで https://typescript.nuxtjs.org/ それにあわせてなのかやり方がそれまでとまた変わってしまいました。
GitHubにて環境設定のサンプルを公開しています。
環境設定サンプル:nuxt-2.9.x-typescript-class-based
インストールする手順
だいたいNuxt TypeScript https://typescript.nuxtjs.org/のGet Startedの手順でやればいいわけですがはじめてだとちょくちょくひっかかるところがありそうなのでメモがわりにレポジトリを用意してREADMEに残しておきます。
必要なものあるかどうか確認
1 | node -v |
まずはお決まりのNode.js入ってるか確認。本日のNode.js推奨版はv10.16.3なんですね。
関わっているプロジェクトの関係からv10.15.1使ってます。たしかNodeはv8.9.0以上、npmは5.0.0以上って感じですね。
https://github.com/nuxt/nuxt.js/blob/dev/distributions/nuxt/package.json
このあたりを参考にしていただければ。
まずはNuxt.jsでプロジェクトを作成します。
Nuxt.jsのインストールの説明はnpxを使ってますね。npxはnpm v5.2.0以上だと特にインストール不要だったと思います。
1 | npx create-nuxt-app <project-name> |
1 | yarn create nuxt-app <project-name> |
今いるディレクトリにインストールしたい時はプロジェクト名を入れない感じでいきます。
1 | yarn create nuxt-app |
いくつかの質問に答えていきます。
1 | ? Project name |
1 | ? Project description |
1 | ? Author name |
Yarnでもnpmでも好みで選びましょう。
1 | ? Choose the package manager (Use arrow keys) |
UIフレームワークは必要でなければNoneでいいでしょう。
1 | ? Choose UI framework (Use arrow keys) |
サーバーフレームワークも必要でなければNoneでいいでしょう。
1 | ? Choose custom server framework (Use arrow keys) |
Nuxt.js 公式モジュールですね。
このあたりも必要に応じてインストールしてください。
1 | ? Choose Nuxt.js modules (Press <space> to select, <a> to toggle all, <i> to invert selection) |
なくても動きます。必要であればインストールしてください。
1 | ? Choose linting tools (Press <space> to select, <a> to toggle all, <i> to invert selection) |
なくても動きます。必要であればインストールしてください。
1 | ? Choose test framework (Use arrow keys) |
サーバーサイドでレンダリングしたい場合はUniversal(SSR)を選んでください。
こちらの記事などを参考にSingle Page AppかUniversalを選ぶといいと思います。
Nuxt.jsを使うときに、SPA・SSR・静的化のどれがいいか迷ったら サーバサイドレンダリング
これまでに議論されたすべての側面を適切に構成するプロダクション向けのサーバーレンダリングに対応したアプリケーションの開発は難しい作業です。幸いにも、これをもっと簡単にすることを目指す優れたコミュニティプロジェクト Nuxt.js があります。Nuxt.js は、Vue エコシステムの上に構築された高レベルのフレームワークで、ユニバーサル Vue アプリケーションを作成するための非常に合理的な開発エクスペリエンスを提供します。
1 | ? Choose rendering mode (Use arrow keys) |
VS Codeを使っていたらインストールしてみてください。
不要であれば後でプロジェクトのルートに追加されるjsconfig.jsonを消せばいいだけですね。
1 | ❯◯ jsconfig.json (Recommended for VS Code) |
このままではTypeScriptを使えません。
このままではTypeScriptが使えないです。いくつかの手順を踏む必要があります(そんなに難しくないです)。
Nuxtをアップデートします。現状では上記手順ですと2.0.0(2019/9/3現在)がインストールされます。
ここでは2.9.0以上のやり方を説明します。
1 | yarn add nuxt |
npmの場合
1 | npm install --save nuxt |
次に
1 | yarn add --dev @nuxt/typescript-build |
npmの場合
1 | npm install --save-dev @nuxt/typescript-build |
nuxt.config.jsを編集
Nuxt.jsをインストールするとプロジェクトのルートにnuxt.config.jsが作成されます。
ビルドモジュールの設定にインストールした @nuxt/typescript-build
を追記します。
1 |
|
初期状態では以下のようになっています。
1 | buildModules: [ |
以下のように編集します。
1 | buildModules: [ |
tsconfig.jsonの追加
TypeScriptを使うには tsconfig.json
が必要になります。プロジェクトのルートに追加しましょう。
1 | touch tsconfig.json |
Nuxt.jsでTypeScriptを使うためのコンパイラオプションです。
このままの記述でも問題ないと思います。ルールや好みがある場合は必要に応じて設定を変えたり追記したりしましょう。
Compiler Options · TypeScript
1 | { |
Class-based(クラススタイル)でTypeScriptを書きたい
このままでもTypeScriptは書けますがせっかくなのでClass-basedな書き方で書きましょう。
1 | yarn add vue-property-decorator |
npmの場合
1 | npm install --save vue-property-decorator |
pages/index.vueはもともとこういう記述ですね(script部分だけ抜き出してます)。
1 | <script> |
Class-based(クラススタイル)ですと以下のように書けます。
index.vueのclass名は何でも大丈夫なようですね。class名なので大文字からはじめてます。
1 | <script lang="ts"> |
components/Logo.vueにはもともとscriptの記述はないですが以下を追記しました。
1 | <script lang="ts"> |
日常的にClass-based(クラススタイル)で記述したい人は参考にしてみてください。
クラススタイル Vue コンポーネント
Nuxt.jsもここ最近のバージョンでTypeScriptのサポートが公式に組み込まれてきて問題なく使えるようになってきている印象です。
Nuxt.jsでTypeScriptを使う設定の参考にしていただければと思います。