Guide

Getting started#

neato/config is a configuration library for Node.js that allows you to load configuration from multiple sources (.env files, JSON files, environment variables, etc). It provides a simple and flexible API for managing configuration, including support for nested configuration and type safety through schema validation.

First steps#

Let's get started with @neato/config. First lets install the package:

We also install zod for schema validation. A schema library is not required, but it is highly recommended to use one for the added type safety and validation.

npm i @neato/config zod

Then we can create your configuration loader:

import { createConfig, zodCoercedBoolean, loaders } from '@neato/config';
import { z } from 'zod';
 
export const config = createConfig({
  envPrefix: 'APP_', // Load environment variables with prefix `APP_`
  loaders: [
    loaders.environment(), // Load config from environment variables
    loaders.cli(), // Load config from CLI arguments
    loaders.file('.env'), // Load config from .env file
    loaders.file('config.json'), // Load config from JSON file
  ],
  schema: z.object({
    server: z.object({
      port: z.coerce.number(),
    }),
  })
});
 
console.log(`Server running on port ${config.server.port}`);

Choosing a schema#

While a schema is optional, it's highly recommended. These are the supported schemas:

Schema that aren't in the above list but are implementing the Standard Schema interface do not have naming convention detection. You can set up naming conventions manually to make it work.

If you want something custom, you can also implement your own very easily.


Those are the basics! For more details you can read the "Going deeper" section.