1.0.0 • Published 1 month ago
@rx-ted/packages-config
Licence
MIT
Version
1.0.0
Deps
3
Size
19 kB
Vulns
0
Weekly
0
DeprecatedThis package is deprecated
@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/config
Quick 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'