Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

confme

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

confme

Opinionated config library that allows you to have complex config and behaves according to 12-factor app rules

  • 0.0.6
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
441
decreased by-28.29%
Maintainers
1
Weekly downloads
 
Created
Source

confme

Opinionated config library that allows you to have complex config and behaves according to "Twelve Factor App" rules.

  • It is build on top of dotenv-defaults
  • Uses LIVR (with extra rules) for config schema validation.
  • Follows the ideas of Twelve Factor App

How does it work?

"confme" loads your config and replaces placeholders with environment variables. For environemnt loading it uses dotenv-defaults, so you can create ".env.defaults" file to set default values of environment variables. If you have placeholders for non set environment variables then "confme" will throw an error.

You can pass a path to a JSON file with LIVR rules as a second argument. In this case, it will use LIVR (with extra rules) to validate the config.

Usage examples

Load config

const confme = require("confme");
const config = confme(__dirname + "/config.json");

Load config with validation

const confme = require("confme");

const config = confme(
  __dirname + "/config.json",
  __dirname + "/config-schema.json"
);

Example config

Placeholders are optional

{
  "listenPort": "{{PORT}}",
  "apiPath": "https://{{DOMAIN}}:{{PORT}}/api/v1",
  "staticUrl": "https://{{DOMAIN}}:{{PORT}}/static",
  "mainPage": "https://{{DOMAIN}}:{{PORT}}",
  "mail": {
    "from": "MyApp",
    "transport": "SMTP",
    "auth": {
      "user": "{{SMTP_USER}}",
      "pass": "{{SMTP_PASS}}"
    }
  }
}

Example LIVR schema

See LIVR for details.

{
  "listenPort": ["required", "positive_integer"],
  "apiPath": ["required", "url"],
  "staticUrl": ["required", "url"],
  "mainPage": ["required", "url"],
  "mail": ["required", {"nested_object": {
    "from": ["required", "string"],
    "transport": ["required", {"one_of": ["SMTP", "SENDMAIL"] }],
    "auth": {"nested_object": {
      "user": ["required", "string"],
      "pass": ["required", "string"]
    }}
  }}]
}

Full example in examples folder.

Try it with

  • node app.js
  • DOMAIN=myapp.com PORT=80 node app.js
  • PORT='AAA' node app.js

Keywords

FAQs

Package last updated on 18 Mar 2019

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

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc