
Security News
minimatch Patches 3 High-Severity ReDoS Vulnerabilities
minimatch patched three high-severity ReDoS vulnerabilities that can stall the Node.js event loop, and Socket has released free certified patches.
@isaacs/cliui
Advanced tools
Fork of cliui. Fully CommonJS/ESM hybridized, with all dependencies vendored and optimized for minimal bundle size without sacrificing functionality.
easily create complex multi-column command-line-interfaces.
The default export is no longer exported. So, intead of import cliui from '@isaacs/cliui', you'll do import { cliui } from '@isaacs/cliui'. This is done in order to minimize typescript
oddness between the CommonJS and ESM versions.
A minified export is provided at @isaacs/cliui/min. If you are
concerned about bundle size, that's the thing to use.
import { cliui } from '@isaacs/cliui'
// or: const { cliui } = require('cliui')
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],
},
{
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())
Load the minified version from unpkg.
import { cliui } from 'https://unpkg.com/@isaacs/cliui/dist/esm/index.min.js'
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())
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...
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]
cliui = require('@isaacs/cliui')
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.
Enable or disable the wrapping of text in a column.
Create a row with any number of columns, a column can either be a string, or an object with the following options:
right or center.[top, right, bottom, left].Similar to div, except the next row will be appended without
a new line being created.
Resets the UI elements of the current cliui instance, maintaining the values
set for width and wrap.
FAQs
easily create complex multi-column command-line-interfaces
The npm package @isaacs/cliui receives a total of 72,224,760 weekly downloads. As such, @isaacs/cliui popularity was classified as popular.
We found that @isaacs/cliui demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
minimatch patched three high-severity ReDoS vulnerabilities that can stall the Node.js event loop, and Socket has released free certified patches.

Research
/Security News
Socket uncovered 26 malicious npm packages tied to North Korea's Contagious Interview campaign, retrieving a live 9-module infostealer and RAT from the adversary's C2.

Research
An impersonated golang.org/x/crypto clone exfiltrates passwords, executes a remote shell stager, and delivers a Rekoobe backdoor on Linux.