
Research
/Security News
Trivy Under Attack Again: Widespread GitHub Actions Tag Compromise Exposes CI/CD Secrets
Attackers compromised Trivy GitHub Actions by force-updating tags to deliver malware, exposing CI/CD secrets across affected pipelines.
@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 49,303,074 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.

Research
/Security News
Attackers compromised Trivy GitHub Actions by force-updating tags to deliver malware, exposing CI/CD secrets across affected pipelines.

Security News
ENISA’s new package manager advisory outlines the dependency security practices companies will need to demonstrate as the EU’s Cyber Resilience Act begins enforcing software supply chain requirements.

Research
/Security News
We identified over 20 additional malicious extensions, along with over 20 related sleeper extensions, some of which have already been weaponized.