@rx-ted/config
v0.0.4
Published
Universal environment configuration adapter for multiple JavaScript runtimes.
Downloads
512
Maintainers
Readme
@rx-ted/config
Universal environment configuration adapter for multiple JavaScript runtimes.
Supported Runtimes
- Deno - Native
Deno.env - Bun - Native
Bun.env - Node.js -
dotenvwith.envfile support - Cloudflare Workers - Global scope with optional KV bindings
Installation
pnpm add @rx-ted/configQuick Start
import { createEnvAdapter } from "@rx-ted/config";
// Create adapter (auto-detects runtime)
const adapter = createEnvAdapter();
// Get environment variable
const dbHost = adapter.get("DB_HOST");
const port = adapter.get("PORT");
// Get runtime environment
const env = adapter.getRuntimeEnv(); // 'dev' | 'test' | 'prod'
// Get adapter name
console.log(adapter.name); // 'node' | 'bun' | 'deno' | 'cloudflare'API
createEnvAdapter(path?, cloudflareEnv?)
Creates an EnvAdapter instance for the current runtime.
Parameters:
| Parameter | Type | Description |
| --------------- | ------------------------------------- | ---------------------------------- |
| path | string | Path to .env file (Node.js only) |
| cloudflareEnv | Record<string, string \| undefined> | Cloudflare KV bindings |
Returns: EnvAdapter
EnvAdapter
| Property/Method | Type | Description |
| ----------------- | --------------------- | --------------------------------------------------------- |
| name | string | Runtime name: 'node', 'bun', 'deno', 'cloudflare' |
| get(key) | string \| undefined | Get env variable by key |
| getRuntimeEnv() | AppEnv | Get runtime environment ('dev' \| 'test' \| 'prod') |
Types
type AppEnv = "prod" | "dev" | "test";
interface EnvAdapter {
readonly name: string;
get(key: string): string | undefined;
getRuntimeEnv(): AppEnv;
}Examples
Node.js with .env file
import { createEnvAdapter } from "@rx-ted/config";
const adapter = createEnvAdapter("/path/to/.env");
const dbHost = adapter.get("DB_HOST");
const dbPort = Number(adapter.get("DB_PORT") || "3306");Deno
import { createEnvAdapter } from "@rx-ted/config";
const adapter = createEnvAdapter();
// Deno reads from Deno.env automatically
const apiKey = adapter.get("API_KEY");Cloudflare Workers
import { createEnvAdapter } from "@rx-ted/config";
export default {
async fetch(request: Request, env: Env) {
const adapter = createEnvAdapter(env);
const apiUrl = adapter.get("API_URL");
// ...
},
};Checking Environment
const adapter = createEnvAdapter();
const env = adapter.getRuntimeEnv();
if (env === "dev") {
console.log("Development mode");
} else if (env === "prod") {
console.log("Production mode");
}Environment Detection
The adapter detects environment from these environment variables (in order):
NODE_ENVDENO_ENV(Deno only)ENVIRONMENT
Values:
production/prod→'prod'test/testing→'test'- Anything else →
'dev'
