Skip to content

Latest commit

 

History

History
42 lines (34 loc) · 896 Bytes

File metadata and controls

42 lines (34 loc) · 896 Bytes

@prestonarnold/config

An easy to use configuration management library for Node.js applications.

Installation

npm install @prestonarnold/config

OR

yarn add @prestonarnold/config

Usage

import { validate } from "@prestonarnold/validate";
import { createConfig } from "@prestonarnold/config";

const userSchema = validate.object({
    PORT: validate.number().default(3000),
    NODE_ENV: validate.string().default("development"),
});

const config = createConfig({
    schema: userSchema,
    validator: (data, schema) => {
        const res = schema.parse(data);
        if (!res.success) throw new Error(res.errors.join(", "));
        return res.data;
    },
    sources: [
        'env', // process.env
        'file:.env', // dotenv
    ],
})

console.log(config.get('PORT'));
console.log(config.get('NODE_ENV'));
console.log(config.all());