Vue.js + Firebaseでアプリケーションを作ってみようと思ったのですが、どうにも環境変数周りでハマってしまったので、今回は環境変数の扱いのみやります。
vue-cliのバージョンを確認。2系が入ってるみたい。公式ドキュメントは3系の方が豊富に見えたので3系でやります。
$ vue --version 2.9.6
古いvue-cliをアンインストール。
$ npm uninstall vue-cli -g
新しいvue-cliをインストール。
npm install -g @vue/cli
んー。Node.jsもアップグレードせないかんのか。めんどくさ。
$ vue --version You are using Node v8.4.0, but this version of vue-cli requires Node >=8.9. Please upgrade your Node version.
stable版で10.8.0
$ n --stable mkdir: /usr/local/n/versions/node: Permission denied mkdir: /usr/local/n/versions/io: Permission denied 10.8.0
stableで十分なので、stableをインストールする。
$ sudo n stable
よし3系が入ったぞ!
$ vue --version 3.0.1
アプリケーションのテンプレを作る。なんかvue-cli2系の記事はvue init
を使っているケースが多かったけど、それだと今回の環境変数を切り分けるのがうまくいかなかった。
公式ドキュメントにしたがい、vue create
の方を使う。いろいろ聞かれるがとりあえず全部デフォでOKしていく。
$ vue create todo-vue-cli3
アプリケーションを起動。
$ yarn serve
とりあえず起動は出来た
環境変数
公式ドキュメントに書いてあるように、頭にVUE_APP_
をつけた環境変数しか有効にならない。
Environment Variables and Modes Vue CLI 3
.env
FOO=foo SECRET=secret VUE_APP_FOO=vue_app_foo VUE_APP_SECRET=vue_app_secret
main.js
import Vue from 'vue' import App from './App.vue' Vue.config.productionTip = false console.log(process.env.FOO) console.log(process.env.SECRET) console.log(process.env.VUE_APP_SECRET) console.log(process.env.VUE_APP_FOO) new Vue({ render: h => h(App) }).$mount('#app')
chromeのコンソールではこの様になる
[HMR] Waiting for update signal from WDS... undefined undefined vue_app_secret vue_app_foo Download the Vue Devtools extension for a better development experience: https://github.com/vuejs/vue-devtools
公式ドキュメントによると.env.local
も使えるようだ。これはgitignoreに追加しておいて、各自のローカルのみ有効にしたい環境変数を定義したい場合に使う。
.env.local
FOO=foo2 SECRET=secret2 VUE_APP_FOO=vue_app_foo2 VUE_APP_SECRET=vue_app_secret2
結果。.env.local
の方の環境変数で上書きされているのが分かる。
[HMR] Waiting for update signal from WDS... undefined undefined vue_app_secret2 vue_app_foo2 Download the Vue Devtools extension for a better development experience: https://github.com/vuejs/vue-devtools
vue-cli3系での環境変数の使い方を把握したので、次はVue.js + Firebaseをやってみたい。