日々是好日

プログラミングについてのあれこれ、ムダ知識など

Vueでプロジェクトを初期化したときのメモ

vue create <project-name>でVueプロジェクトを作成したとき、毎回同じところでハマっているのでいい加減手順をメモしておく。

構成は Vue+Firebase、UIにVuetifyを使用する(Vue 4系)。

あと、ついでにFirebase FunctionsではローカルのESLintを有効にする(グローバルインスコしない)。

手順

どうもVueで初期化したプロジェクトフォルダ内でfirebase initすると、Functionsのpackage.jsonとVueのpackage.jsonが競合(nodeモジュールが思ったところにインストールされない)してしまうため、frontendとbackendディレクトリに分けて構成した。

package.jsonがnode_moduleを走査するときの動作が影響しているような気がするけど、いまいち分からん。

…と思って検索したらこうすればよかった件。でもやっぱりめんどそうだな…( ˘ω˘)

www.it-swarm.dev

手順少し修正。FunctionsとHostingを同一フォルダにインストールしようとしてたのがいけない…。

Firebase でプロジェクトを作成

  1. Firebase コンソールでプロジェクトを作成する。

  2. FunctionsやStorage等初期化しておく(reagionはasia-northeast1(東京))

あとでindex.htmlに注入するHtmlスニペットはとりあえず脇に置いておく。

ローカルにプロジェクトを作成

  1. 前準備として、frontendbackend/firebaseディレクトリを作成する

  2. frontendディレクトリにて、vue create <project-name>でVueプロジェクトを作成する。このとき、TypeScriptを選択しておく(あとから導入する場合

  3. tsconfig.jsonにてcompilerOptions.module: "commonjs"とする

  4. とりあえずnpm run buildでビルドできることを確認する(distディレクトリが生成)

  5. vue add vuetifyでVuetifyを導入する。App.vue等書き換えるか聞かれるが、問題なければYesで。

  6. tsconfig.jsonにて、compilerOptions.types: ["vuetify"]を追加する。忘れると型定義を参照できないためコンパイル時にエラー吐く。

  7. backend/firebaseに移動し、firebase initでFirebase プロジェクトを初期化する

  8. Firebase コンソールにて作成したプロジェクトを選択する

  9. とりあえずFirestoreとHostingとFunctionsを選択する。Hostingはfrontendディレクトリで初期化する。

  10. FuncitonsをインストールするときにTSLintを導入するか聞かれるが、現在はESLintに移行しているようなのでNoを選択する

  11. ひととおりインストールが終わったら、frontendディレクトリに移動し、firebase init hostingホスティングをインストールする

  12. Hostingの設定時にデプロイするディレクトリを聞かれるので、distとする。このとき既存のファイルを上書きするか聞かれるが、Noとする

  13. firebase serveでVuetifyの初期ページが表示されることを確認

  14. backend/firebase/package.jsonにてdevDependencieseslintの依存関係を追加し、npm i

  15. ./node_modules/.bin/eslint --initでESLintを導入

  16. frontend/public/index.html<body></body>内にFirebaseを利用するためのHtmlスニペットを記載する

以上で終わり。 ローカルの構築にトラップがありすぎる。これ全部覚えてるフロントエンドエンジニアつよすぎでは…。

参考

qiita.com

qiita.com