Socket
Socket
Sign inDemoInstall

apphost

Package Overview
Dependencies
6
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    apphost

Functional configuration manager. Load config from file, environment variables, and cli args.


Version published
Weekly downloads
2
increased by100%
Maintainers
1
Install size
375 kB
Created
Weekly downloads
 

Changelog

Source

0.4.1

Patch Changes

  • 16e83cf: fix docs

Readme

Source

TypeScript NPM Build Status Test Coverage

AppHost

Simple, functional configuration manager. Load and merge config from JSON files, environment variables and cli args.

Install

npm install apphost -P

Usage

// config/index.js
const {
  configure,
  setConfigPath,
  addFile,
  addEnv,
  addArgv
} = require("apphost");

module.exports = configure(
  // Optional. configPath defaults to CWD/config/
  setConfigPath('./config'),
  addFile("appsettings.json"),
  addFile(`appsettings.${process.env.NODE_ENV || "development"}.json`, {
    required: false,
  }),
  addEnv({
    // Optional: merge all env vars starting with prefix
    prefix: 'APP_HOST_',
    // OR explicitly map env var to config object paths
    envToConfigMapping: {
      // process.env.DB_PASSWORD will map to
      // { database: { password: '' }}
      DB_PASSWORD: 'database.password'
    }
  }),
  addArgv({
    // Optional: Specify aliases
    argvAliases: [{ argv: 'app', aliases: ['a'] }],
    // Map argv options to config object paths
    argvToConfigMapping: {
      // -a is an alias for --app.
      // Both will map to { app: { name: '' }}
      app: 'app.name'
    },
  })
);

Config files

addFile supports loading and merging JSON files into the config object.

config/appsettings.json

{
  "app": {
    "name": "MyApp",
    "version": "1.0.0",
    "description": "cool app"
  },
  "database": {
    "url": "",
    "user": "",
    "password": ""
  },
  "logging": {
    "level": "errors"
  }
}

config/appsettings.development.json

{
  "logging": {
    "level": "debug"
  }
}

Environment variables

Enviroment variables map to the config object in two ways.

Variables specified in the envToConfigMapping option map as outlined in the mapping.

Variables that match the prefix option, if provided, are lowercased and then _ are treated as spaces and the joined as a camelCase string.

NODE_ENV=development
# Maps to database.user
APP_HOST_DATABASE.USER=admin
# Maps to database.password
DB.PASSWORD=password123

CLI args

Like environment variables, cli args map to config object in two ways. Those in the argvToConfigMapping are mapped according to the mapping. Alternatively, object paths can be passed directly to the script.

Running the application with

# -a is an alias for --app which maps to app.name
node app.js -a "My Awesome App" --database.url "dbUrl"

Results in

// config
{
  "app": {
    "name": "My Awesome App",
    "version": "1.0.0",
    "description": "cool app"
  },
  "database": {
    "url": "dbUrl",
    "user": "admin",
    "password": "password123"
  },
  "logging": {
    "level": "debug"
  }
};

Keywords

FAQs

Last updated on 06 May 2022

Did you know?

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc