ts-appconfig
TypeScript icon, indicating that this package has built-in type declarations

1.2.0 • Public • Published

ts-appconfig

ts-appconfig is a zero-dependency node module to get strongly-typed and IDE-friendly environment variables.

Environment variables are pulled from 3 places, in this order. This means that each step will be overwritten by the following step, if that step also contains the variable:

  1. Defaults from environment schema (your extended AppConfig class)
  2. .env file
  3. process.env

Install

npm i ts-appconfig

Setup

Create a file where you will declare your environment variable schema:

src/environment.ts

import { AppConfig, configure } from 'ts-appconfig';

export class Environment extends AppConfig {
	readonly APP_TITLE: string = '';
}

export const env: Environment = configure(Environment);

Create a .env file (and perhaps a .env.example file, too). Make sure you add .env to your .gitignore file, if it's not there already!

.env

APP_TITLE="Cool App"

Now import your env from the schema file you created and you're ready to use the environment variables!

src/index.ts

import { env } from './environment.ts';

console.log(env.APP_TITLE);

Output:

Cool App

Options

Pass ConfigurationOptions as a second argument to configure to customize how variables are loaded and parsed. All options are optional, you only have to specify the options you would like to change.

...
export const env: Environment = configure(Environment, {
	// Give the .env file your own name or file path
	//	Default: .env
	relativePath: 'my-own-filename.env',

	// Allow variables that are not in schema but are defined in .env
	//	Default: false
	allowUndeclared: false,

	// If true, fromProcessEnv will load .env variables from process.env
	//  Default: true
	fromProcessEnv: true,

	// Set process.env variables from the .env file
	//	Default: true
	overwriteProcessEnv: true,

	// Allow duplicate entries in the .env file for the same variable
	//	Default: false
	allowDuplicates: false,

	// Skip unknown/unparsable lines in the .env file, or throw an exception
	//	Default: false (throws exception)
	skipUnknownLines: false,
});

Package Sidebar

Install

npm i ts-appconfig

Weekly Downloads

1

Version

1.2.0

License

MIT

Unpacked Size

39.6 kB

Total Files

81

Last publish

Collaborators

  • stateless-studio