Socket
Socket
Sign inDemoInstall

yargs-config

Package Overview
Dependencies
74
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    yargs-config

Configuration object wrapper for nested configs with yargs integration


Version published
Maintainers
1
Created

Readme

Source

Build Status

Configuration object wrapper for nested configs with yargs integration. Extends nested-config with runCmd function.

JSDoc

API docs are available on the wiki.

Usage

yargs-config is itself a configuration object. All your current settings are stored in it. It keeps track of default options for you as well.

Initialize with your default settings

Create new config object using create(overrides [object], defaults [object]).

const yc = require('yargs-config');

let defaults = {
    yourOption: 1,
    nested: {
        option: "two"
    },
    meta: {
        yourOption: 'This is my option',
        nested: {
            option: 'This is my nested option'
        }
    }
};

let config = yc.create({}, defaults);

Notice the structure of meta object. It is used to populate yargs configuration. You can use either short form and provide just the description as shown above, or you can provide full meta object.

// ...
meta: {
    yourOption: {
        desc: 'This is my option',
        alias: 'y'
        // default: 1,     // will be filled automatically anyway
        // type: 'number'  // will be filled automatically anyway
    }
    // ...
}

default and type will be determined automatically, so no need to fill them out explicitly. Note that if config property is not inside meta object, it will not be exposed through yargs.

Update current settings

let overrides = {
    yourOption: 2,
    nested: {
        option: "three",
    },
};

config.add(overrides, {});  // performs deep merge into current config state

Access settings

config.yourOption;  // 2
config.getDefault('yourOption');  // 1
config.nested.option;  // "three"
config.getDefault('nested.option');  // "two"

Run yargs

runFromCmd(propStr [string], callback)

Starts command-line application with yargs, supporting piped inputs.

  • propStr - where to look for settings in case of nested config (e.g. consider propStr as the root). Leave empty for using whole object.
  • callback - calls when done with (err, data, argv), where data is stdin and argv is parsed yargs argv object.
if (!module.parent) {
  // Running from CLI
  config.runFromCmd('', (err, data, argv) => {
    // err is null if ok
    console.log(`This is input: ${data}`);
    console.log(`These are passed settings: ${argv}`);
  });
  
} else {
  // Using as a module
  module.exports = ...;
}

Now your application app.js can be launched from CLI as follows:

$ echo "your input" | app.js --yourOption 5 --nested.option "five"
$ app.js "your input" --yourOption 5 --nested.option "five"

Keywords

FAQs

Last updated on 10 Sep 2017

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