jsのベストプラクティス–設定ファイルと変数をよりスマートに管理する方法

2018年03月24日•3分読み取り

私は別のノードを作成する練習を見つけます。異なる環境(開発、テスト、ステージング、本番)の設定変数を管理するjs設定ファイルが面倒です。

だから私は1つのノードですべての環境の設定変数を管理する解決策に終わりました。js設定ファイル。

まず、configを作成しましょう。以下のようなroot/configフォルダ内のjson。 アイデアは、開発がデフォルトの環境であり、すべての設定変数が含まれています。 デフォルトの開発環境で見つかったデフォルトの設定変数値を上書きする場合にのみ、他の環境で設定変数を繰り返します。

ご覧のように、テスト環境、ステージング環境、本番環境はすべてconfig_id変数とデータベース設定変数を上書きします。 また、ステージング環境と本番環境でもnode_port設定変数が上書きされます。

次に、実際のロジックを実装するためのコードを書いてみましょう。 設定を作成します。以下のようなroot/configフォルダ内のjs。 このコード:

  1. root/configで見つかったJSONを読み込みます。jsonファイル。
  2. は、デフォルトのconfigをconfigにある開発ノードに設定します。json。
  3. 環境設定を、configにある対応する環境ノードに設定します。NODE_ENV環境変数値に基づくjson(nullの場合はデフォルトでdeveloptionになります)。
  4. は、lodashのmergeメソッドを呼び出して、final configをdefaultとenvironment configの和集合に設定します。
  5. グローバル変数gConfigにfinal configの値を設定します。
  6. gConfigの値をログに記録します。

最後に、root/serverを作成しましょう。ブラウザでこのすべてをテストするjs。 以下のコードは自明です。 NODE_ENV環境変数に異なる値を設定してテストします。

ここでは、サーバーでNODE_ENV環境変数を設定してテストしたスクリーンショットをいくつか紹介します。jsを開発およびステージングに使用します。 ステージング環境では、app_name、app_desc、json_indentationの値は変更されず、config_id、node_port、およびdatabaseの値がオーバーライドされる開発環境から取得されることがわかります。

開発環境のログ出力

開発環境のブラウザ出力

ステージング環境のログ出力

ステージング環境のブラウザ出力

上記のコードを複製/ダウンロードできます ここの私のGitHubリポジトリから。

ボーナスとして、APIキーやパスワードのような秘密をconfigに含めることを止めるものは何もありません。json。 Google Cloud PlatformのCloud Key Management Service(KMS)などのエンタープライズグレードの暗号化ソリューションを使用して、保存時に暗号化してソースリポジトリにプッシュするだけです。 そして、あなたのお気に入りのCI/CDツールを使用して、すべての展開時にそれを復号化します。

詳細については、Google Cloud Platformのクラウドキー管理サービス(KMS)を使用して秘密を暗号化/復号化する私のブログ記事をチェックしてください。

ハッピーコーディング!

コメントを残す

メールアドレスが公開されることはありません。