Skip to content

🔧 ⛵ TypeScript configuration, as konvenient as possible.

License

Notifications You must be signed in to change notification settings

dwmt/konvenient

Repository files navigation

Konvenient

🔧 ⛵

TypeScript configuration, as konvenient as possible. | Decorator-driven configuration library for TypeScript, based on convict.

konvenient uses the MIT License. Current npm package version. Continuous Integration status.

To get started, simply install konvenient using your package manager of choice:

npm i konvenient

Quickstart

Example for konvenient configuration:

import {Configuration, Configurable} from 'konvenient'

@Configuration()
class HttpConfiguration {
	@Configurable({
		doc: 'The port on which the server listens.',
		format: 'port',
		env: 'PORT'
	})
	port = 8080
}

const config = new HttpConfiguration()

console.log(config.port)

For more examples and recipes, please head over to examples.

Features

  • Everything from Convict and more. Internally, konvenient wraps convict, and exposes all of its functionality: loading configuration values from files, command line args and environment variables, format checking with support for custom formats, default values and so on!
  • Decorator-driven. Konvenient embraces TypeScript classes and turns them into configuration objects via decorators. You can even nest configuration classes into each other!
  • Computed Properties. Define functions and getters on configuration classes just as you would do on any other class. For an example, please refer to examples/src/recipes/03-computed.
  • Inheritance Support. Configuration classes can extend each other, inheriting configurable properties.
  • Env Var and File Key Derivation. Environment variables and config file keys are automatically derived from class and property names. Of course, both the derivation method and the derived values can be overridden.

License

Licensed under the MIT License.