116 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			116 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | # cliui
 | ||
|  | 
 | ||
|  | [](https://travis-ci.org/yargs/cliui) | ||
|  | [](https://coveralls.io/r/yargs/cliui?branch=) | ||
|  | [](https://www.npmjs.com/package/cliui) | ||
|  | [](https://github.com/conventional-changelog/standard-version) | ||
|  | 
 | ||
|  | easily create complex multi-column command-line-interfaces. | ||
|  | 
 | ||
|  | ## Example
 | ||
|  | 
 | ||
|  | ```js | ||
|  | var ui = require('cliui')() | ||
|  | 
 | ||
|  | ui.div('Usage: $0 [command] [options]') | ||
|  | 
 | ||
|  | ui.div({ | ||
|  |   text: 'Options:', | ||
|  |   padding: [2, 0, 2, 0] | ||
|  | }) | ||
|  | 
 | ||
|  | ui.div( | ||
|  |   { | ||
|  |     text: "-f, --file", | ||
|  |     width: 20, | ||
|  |     padding: [0, 4, 0, 4] | ||
|  |   }, | ||
|  |   { | ||
|  |     text: "the file to load." + | ||
|  |       chalk.green("(if this description is long it wraps).") | ||
|  |     , | ||
|  |     width: 20 | ||
|  |   }, | ||
|  |   { | ||
|  |     text: chalk.red("[required]"), | ||
|  |     align: 'right' | ||
|  |   } | ||
|  | ) | ||
|  | 
 | ||
|  | console.log(ui.toString()) | ||
|  | ``` | ||
|  | 
 | ||
|  | <img width="500" src="screenshot.png"> | ||
|  | 
 | ||
|  | ## 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. | ||
|  | * `\s`: characters will be interpreted as padding. | ||
|  | 
 | ||
|  | **as an example...** | ||
|  | 
 | ||
|  | ```js | ||
|  | 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:** | ||
|  | 
 | ||
|  | ```shell | ||
|  | Usage: node ./bin/foo.js | ||
|  |   <regex>  provide a regex | ||
|  |   <glob>   provide a glob          [required] | ||
|  | ``` | ||
|  | 
 | ||
|  | ## Methods
 | ||
|  | 
 | ||
|  | ```js | ||
|  | cliui = require('cliui') | ||
|  | ``` | ||
|  | 
 | ||
|  | ### cliui({width: integer})
 | ||
|  | 
 | ||
|  | Specify the maximum width of the UI being generated. | ||
|  | If no width is provided, cliui will try to get the current window's width and use it, and if that doesn't work, width will be set to `80`. | ||
|  | 
 | ||
|  | ### 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: | ||
|  | 
 | ||
|  | * **text:** some text to place in the column. | ||
|  | * **width:** the width of a column. | ||
|  | * **align:** alignment, `right` or `center`. | ||
|  | * **padding:** `[top, right, bottom, left]`. | ||
|  | * **border:** should a border be placed around the div? | ||
|  | 
 | ||
|  | ### cliui.span(column, column, column)
 | ||
|  | 
 | ||
|  | Similar to `div`, except the next row will be appended without | ||
|  | a new line being created. | ||
|  | 
 | ||
|  | ### cliui.resetOutput()
 | ||
|  | 
 | ||
|  | Resets the UI elements of the current cliui instance, maintaining the values | ||
|  | set for `width` and `wrap`. |