npm.io
1.0.0 • Published 7 years ago

@seanmcgary/config-composer

Licence
ISC
Version
1.0.0
Deps
7
Size
10 kB
Vulns
0
Weekly
0

config-provider

A node module that allows you to build a hierarchical config structure that can source values from the environment.

Install

yarn add @seanmcgary/config-provider

# or

npm install --save @seanmcgary/config-provider
Usage
mkdir -p src/config
// src/config/index.ts
import { ConfigProvider } from '@seanmcgary/config-provider';

import server, { ServerConfigShape } from './server';

export interface ConfigShape {
	server: ServerConfigShape;
}

const provider = new ConfigProvider<ConfigShape>({
	environmentPrefix: 'MY_SUPER_COOL_APP'
});

provider.addConfig<ServerConfigShape>(server, 'server');

const config = provider.getConfig();
export default config;
// src/config/server.ts
import { Config, ExtractValueFn } from '@seanmcgary/config-provider';

export interface ServerConfigShape {
	port: number;
}

export default (ExtractValue: ExtractValueFn): Config<ServerConfigShape> => {
	return new Config<ServerConfigShape>({
		port: ExtractValue({
			name: 'port',
			value: 9000
		}).int
	});
}