現在、とある開発でVueアプリケーションのリファクタリングを行なっています。
マイグレーション対象にはVueCLIも含まれており、2.x→4.xへのバージョンアップを行いました。
この記事では、マイグレーション作業中に気づいた、VueCLI4.x系の環境変数の扱いについて、書き留めておきたいと思います。
VueCLIとは?
ざっくり以下となります。
- Vueアプリケーションを構築するためのライブラリ
vue create {product-name}
でVueベースのプロジェクト作成eslint
/babel
等もいい感じにインストールしてくれる
- VueCLI3.x→4.xへのマイグレーションページもあり、ドキュメントが手厚い感じ
本編
以下に作成したリポジトリをベースに書いていきます。
環境変数は .env
に定義する
VueCLI4.x系の環境変数の扱いは、
のEnvironment Variables
に記載されている通り、.env
に環境変数を定義することになります。
環境別に定義することも可能です。
ファイル名 | 説明 |
---|---|
.env |
・すべての環境において読み込まれる |
.env.local |
・すべての環境において読み込まれる ・ vue create で作成したプロジェクトの場合は.gitignore 対象となる・ .env の設定値を上書きする |
.env.[mode] |
・--mode [mode] で指定した[mode] に合致する場合に読み込まれる・ .env / .env.local の設定値を上書きする |
.env.[mode].[local] |
・--mode [mode] で指定した[mode] に合致する場合に読み込まれる ・ vue create で作成したプロジェクトの場合は.gitignore 対象となる・ .env / .env.local / env.[mode] の設定値を上書きする |
ざっくりまとめると、
.env
.env.local
.env.[mode]
.env.[mode].local
の昇順で読み込み、同じ環境変数名の場合は上書きされるという動作となります。
接頭語「VUE_APP_
」を付与する
vue-cli4-environment-sandboxをyarn s-dev
で起動します。
実際にはyarn run vue-cli-service serve --mode development
を実行、.env.development
が最後に環境変数として読み込み・上書きしています。
# .env.development FOO=bar-development VUE_APP_FOO=bar-development FOO_VUE_APP=bar-development
画面を確認すると、以下のように表示されます。
VUE_APP_FOO
が読み込まれ、
FOO
/ FOO_VUE_APP
は環境変数として認識されていないことがわかります。
おわり
環境変数の件、どうやら3.x系から今の仕様に変わったようですね。
短いですが、以上となります。
間違い等ありましたら、FBいただけると助かります。🙏