tree: ea23f3f7f4634ab6ef3d753bb5c0f1faf4c9f77d [path history] [tgz]
  1. node_modules/
  2. test/
  3. .coveralls.yml
  4. .npmignore
  5. .travis.yml
  6. index.js
  7. LICENSE.txt
  8. package.json
  9. README.md
node_modules/nyc/node_modules/cliui/README.md

cliui

Build Status Coverage Status NPM version

easily create complex multi-column command-line-interfaces.

Example

var ui = require('cliui')({
  width: 80
})

ui.div('Usage: $0 [command] [options]')

ui.div({
  text: 'Options:',
  padding: [2, 0, 2, 0]
})

ui.div(
  {
    text: "-f, --file",
    width: 40,
    padding: [0, 4, 0, 4]
  },
  {
    text: "the file to load",
    width: 25
  },
  {
    text: "[required]",
    align: 'right'
  }
)

console.log(ui.toString())

Layout DSL

cliui exposes a simple layout DSL:

If you create a single ui.row, passing a string rather than an object:

  • \n: characters will be interpreted as new rows.
  • \t: characters will be interpreted as new columns.
  • : characters will be interpreted as padding.

as an example...

var ui = require('./')({
  width: 60
})

ui.div(
  'Usage: node ./bin/foo.js\n' +
  '  <regex>\t  provide a regex\n' +
  '  <glob>\t  provide a glob\t [required]'
)

console.log(ui.toString())

will output:

Usage: node ./bin/foo.js
  <regex>  provide a regex
  <glob>   provide a glob          [required]

Methods

cliui = require('cliui')

cliui({width: integer})

Specify the maximum width of the UI being generated.

cliui({wrap: boolean})

Enable or disable the wrapping of text in a column.

cliui.div(column, column, column)

Create a row with any number of columns, a column can either be a string, or an object with the following options:

  • width: the width of a column.
  • align: alignment, right or center.
  • padding: [top, right, bottom, left].

cliui.span(column, column, column)

Similar to div, except the next row will be appended without a new line being created.