Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Deno] x/dotenvモジュールは非推奨!`--env`フラグを使おう

Last updated at Posted at 2023-06-09

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

image.png
x/dotenvは「DEPRECATED」(非推奨)と書かれています。

--envフラグの使い方

deno runコマンドに--envフラグを渡すと、自動でカレントディレクトリの.envファイルを読み取ってくれます。

.env (例)
GREETING=hello world
# コメントはこう書く
実行時に.envファイルを自動で読み込む
# カレントディレクトリの.envファイルを読み取る
$ deno run --env --allow-env=GREETING ./main.ts
設定した環境変数の使用方法
console.log(Deno.env.get("GREETING"));

Denoにはセキュリティサンドボックス機能があるため、環境変数にアクセスする際は実行時に--allow-envフラグを使用する必要があることに注意してください。

.env以外のファイルを読み込みたい場合は、フラグにファイル名を指定します。

実行時に.envファイルを自動で読み込む
# カレントディレクトリの.envファイルを読み取る
$ deno run --env=./.env.development --allow-env=GREETING ./main.ts

deno deployで環境変数を設定する方法

deno deployはDenoを動かすことができるEdge Runtimeサービスです。

image.png
▲deno deployの管理画面の環境変数設定

おそらく通常のユースケースでは、

  • ローカルでは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フラグを渡したりする必要はありません

まとめ

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?