.env
みたいなのをいっぱい作りたくなかったり、良い感じにしたいので、 1Password に管理を任せてしまおう、という記事。
1Password には、開発者向けのツールとして、 1Password CLI が提供されています。
その CLI の機能に、環境変数を定義した .env
を読み込み、指定された形式で記述された値を、 1Password に保存された値で置き換える、という機能があります。
それを使うことで、良い感じに環境変数を設定できます。
ということで、やっていきましょう。
まず、インストールしていなければ 1Password CLI を入れましょう。
Windows なら Scoop から入ります。
$ scoop install 1password-cli
入れたら、 1Password の設定画面から、 1Password CLI を有効にします。
以下のコマンドが実行できれば OK です。
$ op vault ls
次に、環境変数に設定していたアイテムを 1Password に保存します。
名前はなんでも良いですが、後で使うのでわかりやすい名前を付けておきます。
保存後、次のような形式で環境変数の値部分を置き換えます。
APP_ENV=Vault-$NODE_ENV DATABASE_URL=op://$APP_ENV/DB/connection_string
フォーマットとしては、 op://[Vault 名]/[アイテム名]/[フィールド名]
の形式で指定します。
例えば、 Vault SomeProduct-development
、アイテム名を MySQL
、フィールド名を connection_string
にしたら、以下のようになります。
op://SomeProduct-development/MySQL/connection_string`
ここでは、 $NODE_ENV
で環境を切り替えています。
最後に、以下のようなコマンドを実行します。
Next.js ならこうなる。
cross-env NODE_ENV=development FORCE_COLOR=true op run --env-file='./.env' -- next dev
FORCE_COLOR
を指定しているのは、 op run
を経由すると、色を含まない状態になってしまって、ちょっと見づらくなるので指定しています。
ということで、メモでした。