config-layer-lite
v0.1.0
Published
Layered configuration resolver — merges defaults, file config, environment overrides, and runtime overrides into one object with source tracking per key.
Maintainers
Readme
config-layer-lite
A layered configuration resolver — merges defaults, file config, environment overrides, and runtime overrides into one object, with source tracking per key.
Install
npm install config-layer-liteQuick start
import { resolveConfig, buildStandardLayers } from 'config-layer-lite';
const layers = buildStandardLayers({
defaults: { port: 3000, host: 'localhost' },
file: { port: 4000 },
env: { port: Number(process.env.PORT) || undefined },
overrides: {}
});
const { values, sources } = resolveConfig(layers);
// values: { port: 4000 (or env value), host: 'localhost' }
// sources: { port: 'file' (or 'env'), host: 'defaults' }Why config-layer-lite
Most apps load configuration from several places — hardcoded defaults, a config file, environment variables, and sometimes runtime flags — and the merge logic tends to get rewritten ad hoc each time, with no visibility into which source actually won for a given key. config-layer-lite makes the precedence explicit as an ordered list of named layers, skips undefined values so a layer can "not participate" for a key without clobbering an earlier one, and returns a sources map so you can debug or log exactly where each config value came from.
API
resolveConfig(layers)— merges an ordered array of{ name, values }layers (later wins) into{ values, sources }.buildStandardLayers({ defaults, file, env, overrides })— convenience builder for the common defaults → file → env → overrides stack, including only the layers you provide.
License
MIT
