@digta/config
v0.1.0
Published
Tiny config manager: load / save / watch JSON, YAML, and .env files with one API.
Maintainers
Readme
@digta/config
Tiny config manager for Node. One API to load / save / watch — format picked automatically from the file extension: JSON, YAML, or .env.
npm install @digta/configUsage
import createConfig from "@digta/config";
// or: const createConfig = require("@digta/config");
const config = createConfig("./config.yaml", {
defaults: { port: 3000, host: "localhost" },
});
config.load(); // read + parse the file into config.data
console.log(config.data); // { port: 3000, host: "localhost", ... }
config.data.port = 8080; // mutate directly
config.save(); // write back in the same format
const stop = config.watch((data) => {
console.log("config changed:", data);
});
// stop(); // call to stop watchingFormats
Chosen by extension — no config needed:
| File | Format | Notes |
|-----------------|--------|----------------------------------------------|
| *.json | JSON | Full nesting, typed values |
| *.yaml *.yml| YAML | Full nesting; requires js-yaml (installed) |
| *.env .env | dotenv | Flat KEY=VALUE, string values only |
.env values are always strings (that's what env vars are). Use JSON or YAML if you need nested objects or numbers/booleans.
API
createConfig(filePath, { defaults? }) → a config object:
| Member | Description |
|-----------------|--------------------------------------------------------------------|
| .data | The parsed object. Read and mutate it directly. |
| .load() | Parse the file into .data. A missing file keeps defaults. |
| .save() | Serialize .data back to the file in its format. |
| .watch(cb) | Reload on change, call cb(data). Returns an unwatch() function. |
| .path | The file path. |
| .format | "json" | "yaml" | "env". |
defaults are merged shallowly under loaded values (loaded keys win). Missing file → .data stays as the defaults.
License
MIT
