dotenv multi logic

This commit is contained in:
RingOfStorms (Joshua Bell) 2020-12-19 18:33:47 -06:00
parent 5582d09293
commit 060163f64a
11 changed files with 200 additions and 94 deletions

View file

@ -1,14 +1,21 @@
# dotenv-multi
Dotenv-multi is a module that uses `dotenv` and `dotenv-expand` to load files similarly to Create React App script's. It allows the use of NODE_ENV and local specific env files.
Dotenv-multi is a module that uses [dotenv](https://www.npmjs.com/package/dotenv) and [dotenv-expand](https://www.npmjs.com/package/dotenv-expand) to load files similarly to [Create React App script's](https://create-react-app.dev/docs/adding-custom-environment-variables/#what-other-env-files-can-be-used). It allows the use of NODE_ENV and local specific env files.
This is useful because now you can commit your default env files into the repo and still have a sane way to override them locally without having changes in your local git on one .env file.
Example root files:
```
.env
.env.development
.env.development.local (not pushed to git)
```
# Install
```
# with npm
npm install @ringofstorms/dotenv-multi dotenv dotenv-expand
npm install @ringofstorms/dotenv-multi
```
# Usage
@ -25,6 +32,27 @@ import { config } from '@ringofstorms/multi-env';
config();
```
## Boolean support
This package also uses the [yn](https://www.npmjs.com/package/yn) package to convert environment variables into javascript strings that will resolve as true false. (It replaces values like `0`, `no`, `false`, etc into an empty string `""`)
```typescript
config({
convertToBooleanPredicate: variable => variable.includes("BOOL"),
/* and or */ convertToBoolean: ["BOOL_VARIABLE_TO_CONVERT"]
});
```
## Debug
You can enable debug logs which will also enable debug mode on `dotenv` calls to see what is going on when a variable does not resolve how you expect.
```typescript
config({
debug: true,
});
```
# Configuring .gitignore
You should add the following to your `.gitignore` file:
@ -36,4 +64,14 @@ You should add the following to your `.gitignore` file:
.env.test.local
```
## [What other `.env` files can be used?](https://create-react-app.dev/docs/adding-custom-environment-variables/#what-other-env-files-can-be-used)
# Contributing
### building
`npm run build`
### publishing
if not already done `npm login`
`npm publish --access public`