はじめに
Vite は Vue.js の作者の Evan You 氏が開発しているビルドツールです。 ネイティブの ES Module のインポートを利用し、バンドル不要で高速に動作する開発環境を提供します。 Vue3 はもちろん、React や Preact も対応しています。
今回はそんな Vite を使って、Vue3 プロジェクトの環境構築をします。
できあがったテンプレートはこちらにあります。
やること
vue/cli の default テンプレートに近づけることを目標に、最低限開発に必要なツールを導入していきます。 ツールを個別に導入できるよう、それぞれ順を追って説明しています。
Typescript- ESLint
- Prettier
- Stylelint
- husky と lint-staged
- Path Alias
- vue-tsc
環境構築
次のバージョンで検証されました。
まずは、vite のテンプレートを展開しましょう。
開発サーバーを立ち上げるとその速さに感動します。
⤵️ この作業は不要になりました。
Typescript にする
続いてプロジェクトを Typescript 化しましょう。といっても Vue3 からはデフォルトで Typescript が使えるので次の3つを行うだけです。
1.すべての.vue
ファイルのscript
タグにlang="ts"
を追記します。 2.main.js
をmain.ts
に変更します。 3.index.html
の script タグの src を/src/main.ts
に変更します。
これで開発サーバーを立ち上げると、問題なく実行できるのが確認できます。
実際はこれだけでも動きますが、エディター上でのユーザーエクスペリエンスを向上させるために、さらに設定を加えます。
VSCode を使っている場合は、main.ts
でts(2307)
エラーが出ているはずです。
これを解消するには、vue 用の型宣言ファイルを用意します。
これで Typescript 化は終了です。
ESLint を導入する
リンターのない開発は厳しいので、必ず導入しましょう。
これではエラーになってしまうので、型定義を修正します。
package.json
のscript
にリント用のコマンドを用意するとのちのち楽です。
個人的には、fix したくない場面もあるので、--fix
は外から付けるようにしています。
さてこれを実行させましょう。
VSCode ユーザーは以下の設定もすることで、自動フォーマットを効かせることができます。 ESLint の拡張が必要なので、なければここを参考にインストールしてください。
これによって保存時にフォーマットできました。
husky と lint-staged を設定する
コミット前に、静的チェックを走らせ、エラーコードをコミットできない仕組みにしましょう。
package.json
に次を追加します。
これによって、コミット前にコミットファイルのうち該当する拡張子のファイルに対し、ESLint が走ります。
もちろんリントエラーの場合はコミットがキャンセルされます。
Prettier を設定する
Prettier にプロジェクト全体のフォーマットを任せましょう。 また、Typescript のコードでは、セミコロンは視認性が悪くなるため、Prettier で自動的に削除しましょう。
ESLint と Prettier を併用する場合、ルールのバッティングがあるため、.eslintrc
を修正します。
コマンドによってフォーマッターを実行できます。
コミット前に自動フォーマットを適用させたいので、lint-staged
にその設定を加えます。
VSCode ユーザーは次の設定によって、自動的にフォーマットできます。 また、例によって拡張が必要なので、なければこちらを参考にインストールしてください。
Stylelint を設定する
スタイルもリント対象にしましょう。
package.json
を編集して、コマンドと lint-staged を設定します。
VSCode ユーザーは次の設定によって、自動的にフォーマットできます。 拡張が必要なので、なければこちらを参考にインストールしてください。
長くなりましたがこれでリンターとフォーマッターの基本的な設定は終了です。
Path Alias を設定する
モジュールの import はデフォルトでは相対パスを指定しますが、alias を設定して常に同じルートを参照したいです。
また、 tsconfig.json
も設定します。
これで alias の設定ができました。こんな感じで使います。
vue-tsc で template の静的チェックをする
vue-tsc
で template タグへも静的チェックを行えます。
テンプレート生成時にインストールされていますが、@vue/runtime-dom@3.1.4
の時点では、
tsconfig.json
の skipLibCheck
が true
になっていないと動作しません。
これは @vue/runtime-dom
の型定義にエラーがあるのでそれを回避する目的で行います。
また、静的チェックは Vue ファイルが増加するとかなり時間がかかるようになるため、コミット前ではなく CI で実行することをおすすめします。
以上で最低限の環境が構築できました。
Edit this page on GitHub