This repository has been archived by the owner on Jan 6, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
68 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
JSON-parsed environment variables. | ||
|
||
Super lightweight. | ||
|
||
No dependencies. | ||
|
||
Copies the string values in `process.env` and parses each with `JSON.parse()` to `process.enve`. | ||
|
||
That's it. | ||
|
||
# Usage | ||
|
||
Let's assume you have an `.env` file with the following data: | ||
|
||
```env | ||
STRING_VAR="Hello" | ||
NUMBER_VAR=1234 | ||
BOOL_VAR=true | ||
OBJECT_VAR={"foo":"bar"} | ||
ALSO_STRING_VAR=Hello | ||
``` | ||
|
||
Note that an `.env` file is completely irrelevant to how enve works. This is just an example. How you get the environment variables into your app is up to you. | ||
|
||
Also note that the string variables may differ on how they handle quotes based on how your environment variables are passed to your app and how they're parsed _before_ enve gets to them. Just remember, all enve does is pass the value to `JSON.parse()`, if that _fails_ then it falls back to the original string value. | ||
|
||
```js | ||
// Only needed in your entry file | ||
import 'enve'; | ||
// or... | ||
require('enve'); | ||
|
||
process.env.STRING_VAR === '"Hello"'; | ||
process.enve.STRING_VAR === 'Hello'; | ||
|
||
process.env.NUMBER_VAR === '1234'; | ||
process.enve.NUMBER_VAR === 1234; | ||
|
||
process.env.BOOL_VAR === 'true'; | ||
process.enve.BOOL_VAR === true; | ||
|
||
process.env.OBJECT_VAR === '{"foo":"bar"}'; | ||
process.enve.OBJECT_VAR.foo === 'bar'; | ||
|
||
process.env.ALSO_STRING_VAR === 'Hello'; | ||
process.enve.ALSO_STRING_VAR === 'Hello'; | ||
``` | ||
|
||
## TypeScript | ||
|
||
enve works fine with TypeScript. | ||
|
||
```ts | ||
import 'enve'; | ||
|
||
declare global { | ||
namespace NodeJS { | ||
interface Process { | ||
enve: { foo: string; bar: boolean }; | ||
} | ||
} | ||
} | ||
|
||
// Type 'true' is not assignable to type 'string'. ts(2322) | ||
process.env.foo = true; | ||
// Type 'string' is not assignable to type 'boolean'. ts(2322) | ||
process.env.bar = 'baz'; | ||
``` |