{"_id":"@isaacs/cliui","_rev":"4122362","name":"@isaacs/cliui","description":"easily create complex multi-column command-line-interfaces","dist-tags":{"latest":"9.0.0"},"maintainers":[{"name":"isaacs","email":""}],"time":{"modified":"2026-02-13T22:18:38.000Z","created":"2023-05-02T03:24:28.835Z","9.0.0":"2026-02-05T18:40:56.258Z","8.0.2":"2023-05-02T03:24:28.835Z"},"users":{},"repository":{"type":"git","url":"git+ssh://git@github.com/isaacs/cliui.git"},"versions":{"9.0.0":{"name":"@isaacs/cliui","version":"9.0.0","description":"easily create complex multi-column command-line-interfaces","type":"module","main":"./dist/commonjs/index.js","module":"./dist/esm/index.js","types":"./dist/commonjs/index.d.ts","exports":{"./package.json":"./package.json",".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/commonjs/index.d.ts","default":"./dist/commonjs/index.js"}},"./ansi-regex":{"import":{"types":"./dist/esm/ansi-regex/index.d.ts","default":"./dist/esm/ansi-regex/index.js"},"require":{"types":"./dist/commonjs/ansi-regex/index.d.ts","default":"./dist/commonjs/ansi-regex/index.js"}},"./ansi-styles":{"import":{"types":"./dist/esm/ansi-styles/index.d.ts","default":"./dist/esm/ansi-styles/index.js"},"require":{"types":"./dist/commonjs/ansi-styles/index.d.ts","default":"./dist/commonjs/ansi-styles/index.js"}},"./eastasianwidth":{"import":{"types":"./dist/esm/eastasianwidth/index.d.ts","default":"./dist/esm/eastasianwidth/index.js"},"require":{"types":"./dist/commonjs/eastasianwidth/index.d.ts","default":"./dist/commonjs/eastasianwidth/index.js"}},"./emoji-regex":{"import":{"types":"./dist/esm/emoji-regex/index.d.ts","default":"./dist/esm/emoji-regex/index.js"},"require":{"types":"./dist/commonjs/emoji-regex/index.d.ts","default":"./dist/commonjs/emoji-regex/index.js"}},"./string-width":{"import":{"types":"./dist/esm/string-width/index.d.ts","default":"./dist/esm/string-width/index.js"},"require":{"types":"./dist/commonjs/string-width/index.d.ts","default":"./dist/commonjs/string-width/index.js"}},"./strip-ansi":{"import":{"types":"./dist/esm/strip-ansi/index.d.ts","default":"./dist/esm/strip-ansi/index.js"},"require":{"types":"./dist/commonjs/strip-ansi/index.d.ts","default":"./dist/commonjs/strip-ansi/index.js"}},"./wrap-ansi":{"import":{"types":"./dist/esm/wrap-ansi/index.d.ts","default":"./dist/esm/wrap-ansi/index.js"},"require":{"types":"./dist/commonjs/wrap-ansi/index.d.ts","default":"./dist/commonjs/wrap-ansi/index.js"}},"./min":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.min.js"},"require":{"types":"./dist/commonjs/index.d.ts","default":"./dist/commonjs/index.min.js"}}},"scripts":{"preversion":"npm test","postversion":"npm publish","prepublishOnly":"git push origin --follow-tags","prepare":"tshy && bash build.sh","pretest":"npm run prepare","presnap":"npm run prepare","test":"tap","snap":"tap","format":"prettier --write . --log-level warn","typedoc":"typedoc"},"repository":{"type":"git","url":"git+ssh://git@github.com/isaacs/cliui.git"},"keywords":["cli","command-line","layout","design","console","wrap","table"],"license":"BlueOak-1.0.0","devDependencies":{"@types/node":"^25.2.1","esbuild":"^0.27.2","prettier":"^3.8.1","tap":"^21.5.0","tshy":"^3.1.0","typedoc":"^0.28.16"},"engines":{"node":">=18"},"tshy":{"selfLink":false,"exports":{"./package.json":"./package.json",".":"./src/index.ts","./ansi-regex":"./src/ansi-regex/index.ts","./ansi-styles":"./src/ansi-styles/index.ts","./eastasianwidth":"./src/eastasianwidth/index.ts","./emoji-regex":"./src/emoji-regex/index.ts","./string-width":"./src/string-width/index.ts","./strip-ansi":"./src/strip-ansi/index.ts","./wrap-ansi":"./src/wrap-ansi/index.ts","./min":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.min.js"},"require":{"types":"./dist/commonjs/index.d.ts","default":"./dist/commonjs/index.min.js"}}}},"gitHead":"b33b76c344fc3e76cca1a6e8d8cf25ae09f33fc0","_id":"@isaacs/cliui@9.0.0","bugs":{"url":"https://github.com/isaacs/cliui/issues"},"homepage":"https://github.com/isaacs/cliui#readme","_nodeVersion":"24.4.1","_npmVersion":"11.8.0","dist":{"shasum":"4d0a3f127058043bf2e7ee169eaf30ed901302f3","size":109508,"noattachment":false,"key":"/@isaacs/cliui/-/@isaacs/cliui-9.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@isaacs/cliui/download/@isaacs/cliui-9.0.0.tgz"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"directories":{},"maintainers":[{"name":"isaacs","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cliui_9.0.0_1770316856095_0.0023434399762787272"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-02-05T18:40:56.258Z","publish_time":1770316856258,"_source_registry_name":"default","_cnpm_publish_time":1770316856258},"8.0.2":{"name":"@isaacs/cliui","version":"8.0.2","description":"easily create complex multi-column command-line-interfaces","main":"build/index.cjs","exports":{".":[{"import":"./index.mjs","require":"./build/index.cjs"},"./build/index.cjs"]},"type":"module","module":"./index.mjs","scripts":{"check":"standardx '**/*.ts' && standardx '**/*.js' && standardx '**/*.cjs'","fix":"standardx --fix '**/*.ts' && standardx --fix '**/*.js' && standardx --fix '**/*.cjs'","pretest":"rimraf build && tsc -p tsconfig.test.json && cross-env NODE_ENV=test npm run build:cjs","test":"c8 mocha ./test/*.cjs","test:esm":"c8 mocha ./test/**/*.mjs","postest":"check","coverage":"c8 report --check-coverage","precompile":"rimraf build","compile":"tsc","postcompile":"npm run build:cjs","build:cjs":"rollup -c","prepare":"npm run compile"},"repository":{"type":"git","url":"git+https://github.com/yargs/cliui.git"},"standard":{"ignore":["**/example/**"],"globals":["it"]},"keywords":["cli","command-line","layout","design","console","wrap","table"],"author":{"name":"Ben Coe","email":"ben@npmjs.com"},"license":"ISC","dependencies":{"string-width":"^5.1.2","string-width-cjs":"npm:string-width@^4.2.0","strip-ansi":"^7.0.1","strip-ansi-cjs":"npm:strip-ansi@^6.0.1","wrap-ansi":"^8.1.0","wrap-ansi-cjs":"npm:wrap-ansi@^7.0.0"},"devDependencies":{"@types/node":"^14.0.27","@typescript-eslint/eslint-plugin":"^4.0.0","@typescript-eslint/parser":"^4.0.0","c8":"^7.3.0","chai":"^4.2.0","chalk":"^4.1.0","cross-env":"^7.0.2","eslint":"^7.6.0","eslint-plugin-import":"^2.22.0","eslint-plugin-node":"^11.1.0","gts":"^3.0.0","mocha":"^10.0.0","rimraf":"^3.0.2","rollup":"^2.23.1","rollup-plugin-ts":"^3.0.2","standardx":"^7.0.0","typescript":"^4.0.0"},"engines":{"node":">=12"},"gitHead":"aa397fedbd0550c9925af6b62f970de663285641","bugs":{"url":"https://github.com/yargs/cliui/issues"},"homepage":"https://github.com/yargs/cliui#readme","_id":"@isaacs/cliui@8.0.2","_nodeVersion":"18.16.0","_npmVersion":"9.6.5","dist":{"shasum":"b37667b7bc181c168782259bab42474fbf52b550","size":6089,"noattachment":false,"key":"/@isaacs/cliui/-/@isaacs/cliui-8.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/@isaacs/cliui/download/@isaacs/cliui-8.0.2.tgz"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"directories":{},"maintainers":[{"name":"isaacs","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cliui_8.0.2_1682997868681_0.21888592479043023"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-05-02T03:24:28.835Z","publish_time":1682997868835,"_source_registry_name":"default","_cnpm_publish_time":1682997868835}},"readme":"# @isaacs/cliui\n\nFork of [cliui](http://npm.im/cliui). Fully CommonJS/ESM\nhybridized, with all dependencies vendored and optimized for\nminimal bundle size without sacrificing functionality.\n\neasily create complex multi-column command-line-interfaces.\n\n## Changes in v9\n\nThe default export is no longer exported. So, intead of `import\ncliui from '@isaacs/cliui'`, you'll do `import { cliui } from\n'@isaacs/cliui'`. This is done in order to minimize typescript\noddness between the CommonJS and ESM versions.\n\nA minified export is provided at `@isaacs/cliui/min`. If you are\nconcerned about bundle size, that's the thing to use.\n\n## Example\n\n```js\nimport { cliui } from '@isaacs/cliui'\n// or: const { cliui } = require('cliui')\nconst ui = cliui()\n\nui.div('Usage: $0 [command] [options]')\n\nui.div({\n  text: 'Options:',\n  padding: [2, 0, 1, 0],\n})\n\nui.div(\n  {\n    text: '-f, --file',\n    width: 20,\n    padding: [0, 4, 0, 4],\n  },\n  {\n    text:\n      'the file to load.' +\n      chalk.green('(if this description is long it wraps).'),\n    width: 20,\n  },\n  {\n    text: chalk.red('[required]'),\n    align: 'right',\n  },\n)\n\nconsole.log(ui.toString())\n```\n\n## Deno/ESM Support\n\nLoad the minified version from unpkg.\n\n```typescript\nimport { cliui } from 'https://unpkg.com/@isaacs/cliui/dist/esm/index.min.js'\n\nconst ui = cliui({})\n\nui.div('Usage: $0 [command] [options]')\n\nui.div({\n  text: 'Options:',\n  padding: [2, 0, 1, 0],\n})\n\nui.div({\n  text: '-f, --file',\n  width: 20,\n  padding: [0, 4, 0, 4],\n})\n\nconsole.log(ui.toString())\n```\n\n<img width=\"500\" src=\"screenshot.png\">\n\n## Layout DSL\n\ncliui exposes a simple layout DSL:\n\nIf you create a single `ui.div`, passing a string rather than an\nobject:\n\n- `\\n`: characters will be interpreted as new rows.\n- `\\t`: characters will be interpreted as new columns.\n- `\\s`: characters will be interpreted as padding.\n\n**as an example...**\n\n```js\nvar ui = require('./')({\n  width: 60,\n})\n\nui.div(\n  'Usage: node ./bin/foo.js\\n' +\n    '  <regex>\\t  provide a regex\\n' +\n    '  <glob>\\t  provide a glob\\t [required]',\n)\n\nconsole.log(ui.toString())\n```\n\n**will output:**\n\n```shell\nUsage: node ./bin/foo.js\n  <regex>  provide a regex\n  <glob>   provide a glob          [required]\n```\n\n## Methods\n\n```js\ncliui = require('@isaacs/cliui')\n```\n\n### cliui({width: integer})\n\nSpecify the maximum width of the UI being generated.\nIf 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`.\n\n### cliui({wrap: boolean})\n\nEnable or disable the wrapping of text in a column.\n\n### cliui.div(column, column, column)\n\nCreate a row with any number of columns, a column\ncan either be a string, or an object with the following\noptions:\n\n- **text:** some text to place in the column.\n- **width:** the width of a column.\n- **align:** alignment, `right` or `center`.\n- **padding:** `[top, right, bottom, left]`.\n- **border:** should a border be placed around the div?\n\n### cliui.span(column, column, column)\n\nSimilar to `div`, except the next row will be appended without\na new line being created.\n\n### cliui.resetOutput()\n\nResets the UI elements of the current cliui instance, maintaining the values\nset for `width` and `wrap`.\n","_attachments":{},"homepage":"https://github.com/isaacs/cliui#readme","bugs":{"url":"https://github.com/isaacs/cliui/issues"},"license":"BlueOak-1.0.0"}