Envalid is a small library for validating and accessing environment variables in Node.js (v14.16 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
Note: This package is pure ESM, which requires you to add "type": "module"
to
your package.json
file. If you're using CommonJS, you can for now use the legacy
tag on NPM to use the latest version of v1. The legacy version will be supported
for now, but we will eventually drop support for it.
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;
}
}
}
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 {}
There's an upcoming v3 release which uses envalid
v8, you can try it out by using the
next
tag:
yarn add nestjs-envalid@next envalid
If you need either support for Node 8.12 or above or CommonJS, you can use the
legacy version of this package. To do so, you'll need to use the legacy
tag.
yarn add nestjs-envalid@legacy envalid
The legacy version will be supported for now, but we will eventually drop support for it. We will notify you when we eventually do, at least a few months before, but you should migrate to ESM as soon as possible.
Contributions, issues and feature requests are welcome!
Feel free to check
issues page.
Give a ⭐️ if this project helped you!