@guanghechen/env
v2.0.2
Published
A minimal .env parser with typed value support and variable interpolation.
Maintainers
Readme
A minimal .env parser with typed value support and variable interpolation. Supports comments,
export prefix, quoted values (single/double), escape sequences, and ${VAR} interpolation.
Install
npm
npm install --save @guanghechen/envyarn
yarn add @guanghechen/env
Usage
Parsing .env Content
import { parse } from '@guanghechen/env'
const content = `
# Database configuration
DB_HOST=localhost
DB_PORT=5432
DB_NAME=myapp
# With export prefix
export API_KEY=secret123
# Quoted values
MESSAGE="Hello, World!"
SINGLE_QUOTED='No interpolation here'
# Variable interpolation (double quotes or unquoted)
DB_URL="postgres://\${DB_HOST}:\${DB_PORT}/\${DB_NAME}"
# Escape sequences in double quotes
MULTILINE="Line1\\nLine2\\nLine3"
`
const env = parse(content)
console.log(env.DB_HOST) // 'localhost'
console.log(env.DB_PORT) // '5432'
console.log(env.DB_URL) // 'postgres://localhost:5432/myapp'
console.log(env.MULTILINE) // 'Line1\nLine2\nLine3'Stringifying to .env Format
import { stringify } from '@guanghechen/env'
const env = {
DB_HOST: 'localhost',
DB_PORT: '5432',
MESSAGE: 'Hello World',
SECRET: 'my-secret-key',
}
// Basic stringify
const content = stringify(env)
// DB_HOST=localhost
// DB_PORT=5432
// MESSAGE="Hello World"
// SECRET=my-secret-key
// With exclusion
const filtered = stringify(env, { exclude: ['SECRET'] })
// DB_HOST=localhost
// DB_PORT=5432
// MESSAGE="Hello World"Supported Syntax
# Comments start with #
KEY=value
# Optional export prefix
export KEY=value
# Double-quoted values (with escape sequences and interpolation)
KEY="value with spaces"
KEY="Line1\nLine2"
KEY="Uses ${OTHER_VAR}"
# Single-quoted values (literal, no processing)
KEY='${NOT_INTERPOLATED}'
# Inline comments (unquoted values only)
KEY=value # this is a comment
# Empty values
KEY=