nayucolony

勉強したこととか

【process.env】node.jsでプロジェクトごとに環境変数を設定する

circleCIに環境変数を仕込んだものの、ローカルで動かせないじゃんってなった。 どうにかしてプロジェクトごとに環境変数を追加できないかなと思って調べているとdotenvというnodeモジュールに出会ったのでメモ

どうするの

プロジェクトルートに.envファイルをつくる

USER = nauycolony
PASSWORD = password

node.jsで使えるようにする

dotenvというnode_moduleをつかうのでインストールする。 yarnでも、npmでも、使ってる方でどうぞ。

yarn add dotenv
npm i dotenv

動かすスクリプトファイルで次のように記述。

require('dotend').config();

こうすることで、process.envというオブジェクトに.envの内容をぶちこんでくれる プロジェクト固有の変数を作れる。

使ってみる

普通にオブジェクトとして使えるので、ブラケット記法なりなんなりで参照する。

console.log(process.env.USER) // nayucolony
console.log(process.env.PASSWORD) // password

あとは、.envファイルをgitに含めずにアップすれば、認証につかうユーザー名とかパスワードなんかをリポジトリにあげずに認証を通したりできるということだ。 絶対に.envファイルをリポジトリにあげないように。

process.envってなに

環境変数をまとめて管理するオブジェクト。

中身を見たければ次のようにする。

console.log(process.env)

一例としては以下のようなオブジェクトがでてくる。

{
  SHELL: 'usr/local/bin/zdh',
  VISUAL: 'vim'
  .
  .
  .
}

通したPATHとか、色々とここに全部集約されている。 通常、マシン全体で使うものだが、dotenvをつかうとプロジェクト固有の数値も持たせることができる。