New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

nb-config

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nb-config

simple configuration manager

latest
Source
npmnpm
Version
0.2.0
Version published
Weekly downloads
3
50%
Maintainers
1
Weekly downloads
 
Created
Source

nb-config

Simple server-side file-based configuration manager

Main Feature

  • Easy to Use
  • Separated default configuration for docker deployment(data volume)
  • Running Target
  • Caching: You can use the config as an instance as well as a singleton.

Planned Feature

  • Support various file extension

Usage

Installation

npm install nb-config --save

Basic Usage

DEFAULT FILE: ./config/default.js

value1: hello
value2: world

CONFIG FILE: ./config/development.js

value1: hi

./your.js

const Config = require('nb-config');
let config = new Config();
 
console.log(config.get('value1'), config.get('value2'));

output

# node your.js
hi world

Working with some parameters

example project directory
|/
|--src/
|----your.js
|--config/
|----myProject.default.yaml
|----myProject.development.yaml
|----myProject.production.yaml

load configuration with specific moduleName(default: name field on package.json) and runningTarget(default is 'development')

const Config = require('nb-config');
let config = new Config('myProject', 'production');
 
// config will contains data in myProject.default.js + myProject.production.yaml

runningTarget could be replace with environment NODE_ENV

const Config = require('nb-config');
let config = new Config('myProject');
 
// test with NODE_ENV=production node ./src/your.js
// will returns same value with above example

For docker deployment

example project directory |/
|--src/
|----your.js
|--config/
|----myProject.development.yaml
|----myProject.production.yaml |--myProject.default.yaml

docker dataVolume : /host/myProject/config:/container/config |config/
|--myProject.development.yaml
|--myProject.production.yaml

Once the data volume is mounted in the container, all of the files in the container will be erased.
The problem is even default file also will be erased.

In this case nb-config will useful.

const Config = require('nb-config');
let config = new Config('myProject', null, {
    defaultDir: process.cwd()
});

After data-volume mounted, nb-config will copy ./myProject.default.yaml into empty /config directory
Now, docker host can see full schemed default file in data-volume

Specification

Environment Variables

  • NODE_ENV: runningTarget, see NBCofig
  • NB_CONFIG_DIR: directory where configurations stored
  • NB_DEFATUL_DIR: directory where default file stored

class NBConfig

constructor(['moduleName'], ['runningTarget'], [{options}])
initialize and load configurations

(optional) moduleName

If this field specified, NBConfig will use this moduleName as prefix of configuration files

// it will load default.yaml + development.yaml
let config1 = new NBConfig();
 
// it will load myProject.default.yaml + myProject.development.yaml
let config2 = new NBConfig('myProject'); 

(optional) runningTarget

Order of reading runningTarget

  • parameter on constructor
  • environment variable: NODE_ENV (process.env.NODE_ENV)
  • default is 'development'

Once the value is found, the rest is passed.

(optional) options

  • cache: (boolean) mark use cache or not (default is true). If config loaded from cache config.fromCache marked true
  • env: (boolean) let environment variables overwrite file configuration if exist. (default is true)
    • User can assign not only single config (e.g. "port") but also nested configuration path (e.g. database.url)
      • Environment variables will be cast to the same type as the value specified in the configuration file.
      • __ is a default delimiter of configuration path (e.g. path database.url --> EXPORT database__url=URL_VALUE)
  • configDir: (string) directory where configurations stored
    • Loading Order: options.configDir > process.env.NB_CONFIG_DIR > process.cwd()/config(as default)
  • defaultDir: (string) directory where *.default.ext file stored
    • Loading Order: options.defualtDir > process.env.NB_DEFAULT_DIR > same value as configDir(as default)

License

Copyright 2016 Noizbuster <noizbuster@noizbuster.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Keywords

noizbuster

FAQs

Package last updated on 15 May 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts