https://github.com/simenandre/nestjs-envalid
Simple wrapper on top of envalid for NestJS
https://github.com/simenandre/nestjs-envalid
12factor environment javascript nestjs node nodejs validation
Last synced: 9 months ago
JSON representation
Simple wrapper on top of envalid for NestJS
- Host: GitHub
- URL: https://github.com/simenandre/nestjs-envalid
- Owner: simenandre
- License: apache-2.0
- Created: 2021-07-16T10:39:41.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2024-12-09T04:34:41.000Z (over 1 year ago)
- Last Synced: 2025-01-07T07:44:00.480Z (over 1 year ago)
- Topics: 12factor, environment, javascript, nestjs, node, nodejs, validation
- Language: TypeScript
- Homepage:
- Size: 454 KB
- Stars: 27
- Watchers: 3
- Forks: 1
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
nestjs-envalid
[](https://github.com/prettier/prettier)
[](http://commitizen.github.io/cz-cli/)
> [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][]
[envalid]: https://github.com/af/envalid
[nestjs]: https://github.com/nestjs/nest
**Note**: This package is [pure ESM][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][v1]. The legacy version will be supported
for now, but we will eventually drop support for it.
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[v1]: #common-js--version-1
## Quickstart
```sh
yarn add nestjs-envalid envalid
```
To improve readability you can configure the variables in a separate file named
`config.ts`, like the example below:
```typescript
import { makeValidators, num, Static } from 'nestjs-envalid';
export const validators = makeValidators({
PORT: num({ default: 3000 }),
});
export type Config = Static;
```
The `validators` can then be added to `EnvalidModule`, like so:
```typescript
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:
```typescript
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`.
```sh
yarn add dotenv
```
Next, just set `useDotenv` to `true`
```typescript
import { validators } from './config';
@Module({
imports: [EnvalidModule.forRoot({ validators, useDotenv: true })],
})
export class AppModule {}
```
## v3 / Next
There's an upcoming v3 release which uses `envalid` v8, you can try it out by using the
`next` tag:
```shell
yarn add nestjs-envalid@next envalid
```
[Read more here in #53](https://github.com/simenandre/nestjs-envalid/issues/53)
## Common JS / Version 1
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.
```shell
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.
## Contributing
Contributions, issues and feature requests are welcome!
Feel free to check
[issues page](https://github.com/cobraz/nestjs-envalid/issues).
Give a ⭐️ if this project helped you!