xPulse
πŸ‡¬πŸ‡§ EN
Pages
Contents

Guide

Note

@xpulse/dotenv is used internally by @xpulse/config only. You don't need to import it directly in your app code – @xpulse/config handles loading automatically.

Installation

npm install @xpulse/dotenv --registry=https://npm.xpulse.one

Quickstart

import dotenv from '@xpulse/dotenv';
await dotenv.load();
console.log(dotenv.get('PORT', '3000')); // '3000'

Loading Files

dotenv.load() always loads .env as the base. Optionally an environment-specific file is loaded on top:

// Loads only .env
await dotenv.load();
// Loads .env + .env.stage (stage overrides .env values)
await dotenv.load({ env: 'stage' });

If no env is provided, process.env.NODE_ENV is used as fallback. If that is also not set, only .env is loaded.

Load Order

1. .env ← base
2. .env.{env} ← overrides base values (if present)

Events

After loading, dotenv:loaded is emitted via @xpulse/event – but only if dotenv.useEvent() was called beforehand:

import event from '@xpulse/event';
import dotenv from '@xpulse/dotenv';
dotenv.useEvent(event);
await dotenv.load({ env: 'stage' });
// β†’ emits: dotenv:loaded { env: 'stage', files: ['.env', '.env.stage'], override: false }

Loaded Files

dotenv.loaded; // β†’ true
dotenv.files; // β†’ ['.env', '.env.stage']
en/guide.md 2026-03-13