Utilities for reading environment variable names & values from files in ".env" format
✔ Reads key/value pairs
✔ Handles commented & empty lines
✔ Allows spaces in quoted values
✔ Allows assignment operators in quoted values
✔ Reads from "./.env" when no path arg supplied
✔ Merges the results of multiple input files
✔ Invalid Format (missing key)
✔ Invalid Format (missing value)
✔ Invalid Format (missing assignment)
✔ Invalid Format (space in key)
✔ Invalid Format (space in unquoted value)
✔ Invalid Format (multiple assignment operators)
✔ Invalid Format Error contains accurate line number
yarn add read-env-file
# or
npm i read-env-file
Typescript-friendly (type declarations included)
# path/to/.env
key1=foo
key2=bar
# path/.env
key1=foobar
key3=baz
// path/to/dir/index.js
const { readSingle, readMultiple } = require('read-env-file');
readSingle(); // Attempts to read from ./.env
readSingle('path/to/.env');
// Promise<{key1: 'foo', key2: 'bar'}>
readSingle.sync('path/to/.env');
// {key1: 'foo', key2: 'bar'}
readMultiple(['path/to/.env', 'path/.env']);
// Promise<{key1: 'foobar', key2: 'bar', key3: 'baz'}>
readMultiple.sync(['path/to/.env', 'path/.env']);
// {key1: 'foobar', key2: 'bar', key3: 'baz'}
- comments and blank lines are ignored
- values quoted (with
'
,"
, or backtick) to include spaces and=
character - spaces around keys and values are ignored
Examples:
key=value
# comment starts with "#" (ignored)
# whitespace is trimmed from keys and values
key = value
key =value
key= value
# whitespace in quoted values preserved
key="value with spaces'
# Assignment operators in quoted values preserved
key="value=abc"
Errors are informative and specify the cause, file, and line number:
Invalid file format (multiple assignment operators) at /some/path/.env:12
The following conditions cause an invalid format error:
Cause | Error Mssage |
---|---|
missing key | key undefined |
missing value | value undefined |
missing assignment | value undefined |
space in key | invalid spacing |
space in unquoted value | invalid spacing |
multiple assignment operators | multiple assignment operators |
Examples:
# missing key
=value
# missing value
key=
# missing assignment
keyvalue
# space in key
k e y = value
# space in unquoted value
key=value and words
# multiple assignment operators
key=value=invalid
None