LoginSignup
6
4

More than 3 years have passed since last update.

「config」のセットアップ&使い方(TypeScript)

Last updated at Posted at 2020-01-08

「config」とは?

NODE_ENV の値によって設定を動的に切り替えるライブラリです。

用途

  • 開発環境と本番環境で設定を変更したいとき

環境

  • Node.js:v12.14.0
  • npm:6.13.4
  • config:0.0.36

セットアップ

configのインストール

npmからインストールします。

$ npm install @types/config config

TypeScriptの場合は @types/config もインストールします。
@types/config のみだと、 cdk deploy 時に Cannot find module 'config' エラーが発生しました。

使い方

設定ファイルの作成

設定ファイルを作成します。
config フォルダ内に NODE_ENV と同名で作成する必要があります。

# 「config」フォルダを作成する
$ mkdir config
$ cd config

# 「default.ts」を作成する
# 全環境に共通で読み込まれる設定ファイル
$ touch default.ts

# 「NODE_ENV」の値と同名のファイルを作成する
$ touch production.ts
$ touch development.ts

設定ファイルの編集

AWS CDKで設定ファイルを作成する例です。

全環境共通の設定として、リージョンとAWSアカウントを持たせています。

default.ts
export = {
  region: '{リージョン名}',
  account: '{AWSアカウント名}'
}

本番環境の設定です。
タイムアウトする秒数とメモリサイズを持たせています。

production.ts
export = {
  lambda: {
    {Lambda関数名}: {
      timeout: 30,
      memorySize: 256
    }
  }
}

開発環境の設定です。
本番環境よりスペックを落とし、コストを削減します。

development.ts
export = {
  lambda: {
    {Lambda関数名}: {
      timeout: 5,
      memorySize: 128
    }
  }
}

設定ファイルの読込

config.get() で設定ファイルから値を取得します。
NODE_ENV の値から自動で設定ファイルを選択して読み込みます。

import config = require('config')
import cdk = require('@aws-cdk/core')
import lambda = require('@aws-cdk/aws-lambda')

function createLambdaFn (scope: cdk.Construct): lambda.Function {
  return new lambda.Function(scope, '{Lambda関数名}', {
    runtime: lambda.Runtime.NODEJS_12_X,
    memorySize: config.get('lambda.{Lambda関数名}.memorySize'),
    timeout: cdk.Duration.seconds(config.get('lambda.{Lambda関数名}.timeout')),
  })
}

プログラムの実行

NODE_ENV を設定し、プログラムを実行するのみです。

$ export NODE_ENV=development
$ cdk deploy

NODE_ENV は大文字小文字を区別するので気をつけてください。

$ export NODE_ENV=Development
$ cdk deploy
WARNING: NODE_ENV value of 'Development' did not match any deployment config file names.
WARNING: See https://github.com/lorenwest/node-config/wiki/Strict-Mode
…

おわりに

簡単に実装することができました!
if文を使わずに、環境ごとに設定を切り替えられるので便利です。

参考リンク

6
4
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
4