Denoでdotenvを使う際は、これまでサードパーティモジュールのx/dotenvを使うのが一般的でした。
しかし、x/dotenvは一旦標準ライブラリに移植されたものの、Deno CLI本体の機能に取り込まれたため、非推奨になっています。
。x/dotenvではなく、標準ライブラリの@std/dotenvを使うようにしましょう
x/dotenvや標準ライブラリではなく、実行時にコマンドラインフラグの--envを使うようにしましょう
- import "https://deno.land/x/dotenv@v3.2.2/load.ts";
- deno run ./main.ts
+ deno run --env main.ts

▲x/dotenvは「DEPRECATED」(非推奨)と書かれています。
--envフラグの使い方
deno runコマンドに--envフラグを渡すと、自動でカレントディレクトリの.envファイルを読み取ってくれます。
GREETING=hello world
# コメントはこう書く
# カレントディレクトリの.envファイルを読み取る
$ deno run --env --allow-env=GREETING ./main.ts
console.log(Deno.env.get("GREETING"));
Denoにはセキュリティサンドボックス機能があるため、環境変数にアクセスする際は実行時に--allow-envフラグを使用する必要があることに注意してください。
.env以外のファイルを読み込みたい場合は、フラグにファイル名を指定します。
# カレントディレクトリの.envファイルを読み取る
$ deno run --env=./.env.development --allow-env=GREETING ./main.ts
deno deployで環境変数を設定する方法
deno deployはDenoを動かすことができるEdge Runtimeサービスです。
おそらく通常のユースケースでは、
- ローカルではdotenvファイルを使用して環境変数を管理
- deno deploy上では、deno deployの管理画面から環境変数を管理
のようになると思います。
そのため、.envファイルは.gitignoreでGit管理しないように設定した上で、deno deployの管理画面で環境変数を指定するのが一般的だと思います。
🍋Freshでdotenvを使用する方法
FreshはDeno社製のフレームワークです。preactを使用するDeno版のNext.jsのような立ち位置で、便利で使いやすいです。
Fresh v1.1.6より、.envファイルが自動で読み込まれるようになっています。
そのため、x/dotenvや@std/dotenvをimportしたり、--envフラグを渡したりする必要はありません。
まとめ
-
x/dotenvや標準ライブラリの@std/dotenvではなく、Deno本体の--envフラグを使おう-
x/dotenvは標準ライブラリの@std/dotenvに移植された - その後、Deno本体に
--envフラグが導入され、.envファイルを直接読み込めるようになった
-
- deno deployでは管理画面から環境変数を設定できる
- Freshでは何もしなくても.envファイルを読み込んでくれる
