環境変数(dotnvを使用)


環境変数の必要性

  • alpha、stage(real)およびサーバによって、変数は構築時に環境変数として注入されます.
  • は、他のサーバを実行するために必要なすべてのコードおよび変数を携帯する必要はありません.
  • APIやアカウントのID、パスワードなどの機密情報をそのままコードに書き込んだり、機密情報を含むコードをGithubなどのオープンソースコードに公開したりすることは、セキュリティ上非常に危険です.
  • 以上の理由から、dotnvは、環境変数を使用する必要があり、.envという外部ファイルに重要な情報を格納して、情報を管理することができる.

    dotenv


    dotnv卵.envファイルに宣言された変数を処理します.envにロードされた依存性のないモジュール.
    言い換えれば、環境変数を.envファイルで設定するパッケージである.pathによって.envファイルの絶対パスが検索され、fsモジュールによって.env``파일을 물리적으로 읽어들여 が処理される.key-value形式でenv``に含まれます.

    dotvの使い方

  • dotnvパッケージを見つけて適用します.
  • npm install dotenv
  • .envファイルのパスを指定します.
  • const dotenv = require('dotenv');
    // dotenv.config() 내에 아무것도 명시해주지 않으면 루트에 있는 .env 파일을 찾아 적용한다.
    dotenv.config({
      path: './env/local.env'
    });
  • .envファイルを作成します.
  • // .env 파일 예시
    FIREBASE_API_KEY=TEST_KEY
    FIREBASE_AUTH_DOMAIN=test.firebaseapp.com
    FIREBASE_PROJECT_ID=test
  • DefinePluginによってprocess.envが定義される.
  • webpack.DefinePlugin:すべてのJavaScriptコードからアクセスできるグローバル変数を宣言するプラグイン.
    module.exports = {
      ...
      plugins: [
        new webpack.DefinePlugin({
          "process.env": JSON.stringify(process.env),
        }),
      ]
    }
  • 環境変数の使用process.env.xxx
  • のみ
    # .env #
    FOO=foo
    
    /* example.js */
    console.log(process.env.FOO); // -> console.log('foo');
    // or
    if (process.env.FOO === "foo") {
      console.log("FOO!");
    }
    cf.create-react-appでの環境変数の使用create-react-appにはdotnvパッケージが内蔵されています.
    したがって、.envファイルを作成して変数を宣言するだけで、追加のパッケージを追加したりWebpackを設定したりすることなく、環境変数を使用できます.
    ただし内部はREACT_APP_で始まる環境変数のみを検索するように設定されているので、変数名はREACT_APP_で始まる必要があります!