Node.jsでアプリを作るときに、プログラム上には埋め込みたくない情報を、.envというファイルを作って管理する事が多いです。
例えば、以下のようなものがあるでしょうか。
.env
# Postgresql ENV
DATABASE_URL=postgres://postgres:password@localhost:5432/db
# Session Secret
SESSION_SECRET=KNLCKSO+JPOSJPOS
# NODE Environment
NODE_ENV=development
# JWT Secret
JWT_SECRET=@ofpowegldmvpvnp
今までのやり方
今までは、dotenvパッケージをインストールし、プログラム上に以下のように記述し、.envの内容をロードしていました。
sample.ts
import * as dotenv from 'dotenv';
dotenv.config();
これでもいいのですが、いちいちこう記述するのもめんどくさい。
Herokuにデプロイする事を考えると、そもそも必要ないことだし(Herokuでは、コンソールから環境変数を予め定義しますので、.envファイルそのものが必要ありません)
これは便利
何か他にいい方法はないものかと模索していましたら見つけました。
VisualStudo Codeに.envをロードする機能があるのです。
.vscodeフォルダにlaunch.jsonというプログラムの実行を定義するファイルがあります。
その定義の中に、envFileを追加し、.envのファイル名を指定すると、実行するときに.envの内容をロードしてくれます。
launch.json
{
"version": "0.2.0",
"configurations": [
// nodeによるnode.jsのデバック設定
{
"type": "node",
"request": "launch",
"name": "node",
"program": "${workspaceFolder}\\dist\\server\\server.js",
"envFile": "${workspaceFolder}/.env", // ← ココ!!
"sourceMaps": true
}
],
}
これでコードを書くことなく、.envに定義したものを、process.env.XXXXXとして使えるようになります。
便利!!