JSPM

@guanghechen/env

2.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 78
  • Score
    100M100P100Q72907F
  • License MIT

A minimal .env parser with typed value support and variable interpolation.

Package Exports

  • @guanghechen/env

Readme

@guanghechen/env


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/env
  • yarn

    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=

Reference