| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 | 
							- # cliui
 
- 
 
- [](https://www.npmjs.com/package/cliui)
 
- [](https://conventionalcommits.org)
 
- 
 
- easily create complex multi-column command-line-interfaces.
 
- ## Example
 
- ```js
 
- const ui = require('cliui')()
 
- ui.div('Usage: $0 [command] [options]')
 
- ui.div({
 
-   text: 'Options:',
 
-   padding: [2, 0, 1, 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())
 
- ```
 
- ## Deno/ESM Support
 
- As of `v7` `cliui` supports [Deno](https://github.com/denoland/deno) and
 
- [ESM](https://nodejs.org/api/esm.html#esm_ecmascript_modules):
 
- ```typescript
 
- import cliui from "https://deno.land/x/cliui/deno.ts";
 
- const ui = cliui({})
 
- ui.div('Usage: $0 [command] [options]')
 
- ui.div({
 
-   text: 'Options:',
 
-   padding: [2, 0, 1, 0]
 
- })
 
- ui.div({
 
-   text: "-f, --file",
 
-   width: 20,
 
-   padding: [0, 4, 0, 4]
 
- })
 
- console.log(ui.toString())
 
- ```
 
- <img width="500" src="screenshot.png">
 
- ## Layout DSL
 
- cliui exposes a simple layout DSL:
 
- If you create a single `ui.div`, 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`.
 
 
  |