Configuration loader for Node.js, browsers & Deno

Configuration loader for Node.js, browsers & Deno

miconfig — Configuration loader for Node.js, browsers & Deno.

miconfig — Configuration loader for Node.js, browsers & Deno.

Features

  • Easy: Designed for situations where a PhD into load configurations is infeasible.
  • Lightweight: no bloat, less than 1KB with all dependencies.
  • Isomorphic: Compatible with Node.js, browsers & Deno.
  • Flexible: Super easy load any kind of configuration.
  • Simple: The whole module is ~50 lines of code.

Install

$ npm install miconfig --save

Usage

Load Configuration Files

In miconfig, a configuration has a NODE_ENV value associated.

You can load them for anywhere, e.g., from a folder called config:

.
├── index.js
└── config
   ├── default.js
   ├── production.js
   ├── staging.js
   └── test.js

Just call miconfig passing these configuration:

const loadConfig = require('miconfig')

const FILES = [
  'default',
  NODE_ENV === 'development' ? undefined : NODE_ENV
].filter(Boolean)

const environment = FILES.reduce(
  (acc, key) => ({
    ...acc,
    [key]: require(`./config/${key}`)
  }),
  {}
)

const config = loadConfig(environment)

In case you want to use a different file format (like YAML), you've to parser them before be loaded:

const loadConfig = require('miconfig')
const yaml = require('js-yaml')
const fs = require('fs')

const fromYaml = filepath => yaml.safeLoad(fs.readFileSync(filepath, 'utf8'))

const FILES = [
  'default',
  NODE_ENV === 'development' ? undefined : NODE_ENV
].filter(Boolean)

const environment = FILES.reduce(
  (acc, key) => ({
    ...acc,
    [key]: fromYaml(`./config/${key}.yml`)
  }),
  {}
)

const config = loadConfig(environment)

The configuration default will always be loaded, being possible overwrite these defaults values by the current NODE_ENV configuration.

In case you want to use a different source of truth rather than NODE_ENV, you can pass it as second argument:

const loadConfig = require('miconfig')

const config = loadConfig({
  default: require('./config/default'),
  production: require('./config/default')
}, process.env.APP_ENV)

Accessing to configuration

After miconfig loads your configuration, you can safely access to any value

Safe access
// read a value, don't care if it's empty
const database = config.get('database')
Safe access + default value
// read a value, use a default if empty
const database = config.get('database', 'localhost')
Require access
// read a value, throw an error if it doesn't exist
const database = config.require('database')
Typecheck access
// check if a value exists
if (config.has('feature.prerender')) {
  console.log('prerender is enabled')
}

Additionally, you can retrieve more than one value at one time with destructuring assignment:

Destructuring safe access
// read multiple values, don't care if it's empty
const { timezone, database } = config
Destructuring require access
// read multiple values, throw an error if it doesn't exist
const { timezone, database } = config.required

Download Details:

Author: Kikobeats

Source Code: https://github.com/Kikobeats/miconfig

deno node nodejs javascript

Bootstrap 5 Complete Course with Examples

Bootstrap 5 Tutorial - Bootstrap 5 Crash Course for Beginners

Nest.JS Tutorial for Beginners

Hello Vue 3: A First Look at Vue 3 and the Composition API

Building a simple Applications with Vue 3

Deno Crash Course: Explore Deno and Create a full REST API with Deno

How to Build a Real-time Chat App with Deno and WebSockets

Convert HTML to Markdown Online

HTML entity encoder decoder Online

AEM Querybuilder for JavaScript (Browser, Node, Deno)

Helix Querybuilder .AEM Querybuilder for JavaScript (Browser, Node, Deno)

NKeys for JavaScript - Node.js, Browsers, and Deno

A public-key signature system based on Ed25519 for the NATS ecosystem system for JavaScript. The nkeys.js library works in Deno, Node.js, and the browser!

Javascript module for easily generating mazes,compatible with both Deno and Node

A work-in-progress Javascript maze generator module, compatible with both Deno and Node.

Deno Tutorial for Beginners: Deno vs. Node: Better Than NodeJS?

Deno is released, it’s time to find out if it can prove a worthy competition for Node.js. What is Deno? Why Deno can be considered an alternative to Node? The main differences between Deno and Node. Write a simple Deno app.

What is Deno? The Node.JS Killer? The Deno-minator to Node?

What is Deno? The Node.JS Killer? The Deno-minator to Node? Deno is the new hype and will it be better than node.js? Deno is a secure runtime for JavaScript and TypeScript that is based on the V8 JavaScript engine and the Rust programming language that addresses Node’s shortcomings