You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.0 KiB
86 lines
2.0 KiB
# fastify-env
|
|
|
|

|
|
[](https://www.npmjs.com/package/fastify-env)
|
|
[](https://snyk.io/test/github/fastify/fastify-env)
|
|
[](https://standardjs.com/)
|
|
|
|
Fastify plugin to check environment variables
|
|
|
|
## Install
|
|
|
|
```
|
|
npm install --save fastify-env
|
|
```
|
|
|
|
## Usage
|
|
|
|
```js
|
|
const fastify = require('fastify')()
|
|
const fastifyEnv = require('fastify-env')
|
|
|
|
const schema = {
|
|
type: 'object',
|
|
required: [ 'PORT' ],
|
|
properties: {
|
|
PORT: {
|
|
type: 'string',
|
|
default: 3000
|
|
}
|
|
}
|
|
}
|
|
|
|
const options = {
|
|
confKey: 'config', // optional, default: 'config'
|
|
schema: schema,
|
|
data: data // optional, default: process.env
|
|
}
|
|
|
|
fastify
|
|
.register(fastifyEnv, options)
|
|
.ready((err) => {
|
|
if (err) console.error(err)
|
|
|
|
console.log(fastify.config) // or fastify[options.confKey]
|
|
// output: { PORT: 3000 }
|
|
})
|
|
```
|
|
|
|
This module is a wrapper around [env-schema](https://www.npmjs.com/package/env-schema).
|
|
To read an `.env` file you must set `dotenv` in the options:
|
|
|
|
```js
|
|
const options = {
|
|
dotenv: true // will read .env in root folder
|
|
}
|
|
|
|
// or, pass config options avalible on dotenv module
|
|
const options = {
|
|
dotenv: {
|
|
path: `${__dirname}/.env`,
|
|
debug: true
|
|
}
|
|
}
|
|
|
|
```
|
|
|
|
**NB** Support for additional properties in the schema is disabled for this plugin, with the `additionalProperties` flag set to `false` internally.
|
|
|
|
### Typescript
|
|
In order to have typing for the fastify instance, you should follow the example below:
|
|
|
|
```typescript
|
|
declare module 'fastify' {
|
|
interface FastifyInstance {
|
|
config: { // this should be same as the confKey in options
|
|
// specify your typing here
|
|
};
|
|
}
|
|
}
|
|
```
|
|
|
|
|
|
## Acknowledgements
|
|
|
|
Kindly sponsored by [Mia Platform](https://www.mia-platform.eu/)
|