Serialize JavaScript objects from command line arguments

command, line, arguments
npm install command-line-arguments@1.1.1


Build Status Coverage Status NPM


Simple way to serialize JavaScript objects from command line arguments


You can make JSON style objects directly from command line arguments using simple notation. Dashes indicate classes, attributes, and values.

$ node add-contact.js person -firstname --john -lastname --smith -age --30

Would serialize to

  person: {
    firstname: 'john',
    lastname: 'smith',
    age: 30


Command line arguments with no dashes are the base class(es) or attribute(s). Each dash represents another 'level'. In this example, person is the base class, firstname, lastname, and age are the attributes, and john, smith, and 30 are the values of those attributes.

Levels are determined by the number of dashes before an argument. The fewer dashes the higher the level. Arguments with no levels below them (they have no arguments with more dashes following them in the list) are values. Arguments with only one level after them are attributes. Arguments with multiple levels after them are classes.

//$ exampleProgram person -firstname --john -lastname --smith -age --30

var cla = require('command-line-arguments');

var params = cla.getCommandLineArguments();
console.log(params.firstname); //prints john

//$ exampleProgram2 car -tire --type ---goodyear --age ---2 -color --blue -cost --10000 -condition --good

var cla = require('command-line-arguments');

var params = cla.getCommandLineArguments();

// params = {
//  car:{
//    tire: {
//      type: 'goodyear',
//      age: 2
//    }
//    color: blue,
//    cost: 10000,
//    condition: 'good'
//  }


npm install command-line-arguments --save


//$ node addFood.js name -hotdog calories -400 primary-ingredients -bun -dog -mustard -ketchup

var cla = require('command-line-arguments');
food = cla.getCommandLineArguments();

// food =
//  {
//    name: 'hotdog',
//    calories: 400,
//    'primary-ingredients': [ 'bun', 'dog', 'mustard', 'ketchup' ]
//  };

Simple arrays are supported

//$ node nouns.js person place thing

var cla = require('command-line-arguments');
var nouns = cla.getCommandLineArguments();

// nouns = ['person', 'place', 'thing'];

You can pass in the parameters if you need to, or pass in no parameters and it will automatically read the command line arguments

//$ node program.js

var params = ['car', '-model', '--2001 Toyota Corolla', '-milage', '--219,000', '-color', '--tan' ];
var paramsParsed = cla.getCommandLineArguments(params);

// paramsParsed = {
//  car: {
//    model: '2001 Toyota Corolla',
//    milage: '219,000',
//    color: 'tan'
//  }


This project is licensed under the terms of the MIT license