Skip to content

louis-vinchon/nestjs-envalid

 
 

Repository files navigation

nestjs-envalid

code style: prettier Commitizen friendly

Language grade: JavaScript codecov Maintainability

Envalid is a small library for validating and accessing environment variables in Node.js (v8.12 or later) programs, aiming to:

  • ensure that your program only runs when all of its environment dependencies are met
  • give you executable documentation about the environment your program expects to run in
  • give you an immutable API for your environment variables, so they don't change from under you while the program is running

nestjs-envalid is simple wrapper on top of envalid made for NestJS

Quickstart

yarn add nestjs-envalid envalid

To improve readability you can configure the variables in a separate file named config.ts, like the example below:

import { makeValidators, num, Static } from 'nestjs-envalid';

export const validators = makeValidators({
  PORT: num({ default: 3000 }),
});

export type Config = Static<typeof validators>;

The validators can then be added to EnvalidModule, like so:

import { EnvalidModule } from 'nestjs-envalid';
import { validators } from './config';

@Module({
  imports: [EnvalidModule.forRoot({ validators })],
})
export class AppModule {}

To inject your configuration, you can do this:

import { ENVALID, Config } from './config';

@Injectable()
export class SomeService {
  constructor(@Inject(ENVALID) private readonly env: Config) {}

  someMethod() {
    if (this.env.isProd) {
      const other = this.env.HELLO_WORLD;
    }
  }
}

Add support for dotenv

You'll need to install dotenv.

yarn add dotenv

Next, just set useDotenv to true

import { validators } from './config';
@Module({
  imports: [EnvalidModule.forRoot({ validators, useDotenv: true })],
})
export class AppModule {}

Contributing

Contributions, issues and feature requests are welcome!
Feel free to check issues page.

Give a ⭐️ if this project helped you!

About

Simple wrapper on top of envalid for NestJS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 96.5%
  • JavaScript 3.5%