@isaacs/cliui

中文文档
9.0.0发布于 2026/02/06BlueOak-1.0.0TypeScriptESM + CJS零依赖近 30 天下载 4.6亿

容易创建复杂的多列命令行界面

中文使用文档
文档目录10 节
  1. V9 的变化
  2. 示例
  3. Deno/ESM支助
  4. 布局 DSL
  5. 方法
  6. cliui( {width: 整数})
  7. cliui ({ wrap: 布尔})
  8. cliui.div(栏,栏,栏)
  9. cliui.span (栏,栏,栏)
  10. cliui.reset输出( )

@isaacs/克吕伊

叉子为 饼干完全通用的JS/ESM 混合型,所有依赖性都供货商和优化 最小捆绑大小而不牺牲功能 .

容易创建复杂的多列命令行界面.

V9 的变化

默认导出不再出口 。 所以,我们开始 import cliui from '@isaacs/cliui'你会做的 import { cliui } from '@isaacs/cliui'。这样做是为了尽量减少打字符 通用JS和无害环境管理版本之间的奇异之处.

提供精密导出于 @isaacs/cliui/min。如果是的话 担心捆绑的尺寸,这就是要使用的东西.

示例

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())

Deno/ESM支助

从 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())

布局 DSL

cliui 曝光一个简单的布局 DSL :

如果您创建了单曲 ui.div,通过字符串而不是 对象 :

  • \n:字符将被解释为新行.
  • \t:字符将被解释为新的一栏.
  • \s:字符将被解释为平板字.

作为一个例子...

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())

将输出 :

Usage: node ./bin/foo.js
  <regex>  provide a regex
  <glob>   provide a glob          [required]

方法

cliui = require('@isaacs/cliui')

cliui( {width: 整数})

指定正在生成的 UI 的最大宽度 . 如果没有提供宽度, Cliui 将尝试获得当前窗口的宽度并使用它, 如果无法使用, 宽度将被设定为 80。 。 。 .

cliui ({ wrap: 布尔})

启用或禁用列中文字的包装.

cliui.div(栏,栏,栏)

创建一行,列数为任意,一列 可以是字符串,也可以是以下对象: 选项:

  • 文本 : 一些要放入列中的文本.
  • 宽度 : 列的宽度.
  • 对齐 : 对齐, right 或者说 center。 。 。 .
  • 页: 1 [top, right, bottom, left]。 。 。 .
  • 边框 : 是否应该放置一个边界 围绕地盘?

cliui.span (栏,栏,栏)

类似 div,但下一行将不附加 正在创建新行.

cliui.reset输出( )

重置当前 cliui 实例的 UI 元素, 维护值 设定 width 财务报告和审定财务报表 wrap。 。 。 .

版本与发布记录

@isaacs/cliui 共发布 2 个版本,首次发布于 2023/05/02;过去 12 个月发布了 1 个版本。

版本发布日期距今
9.0.0latest2026/02/069 个月前
8.0.22023/05/023 年前

关于 @isaacs/cliui 的常见问题

@isaacs/cliui 是什么?

容易创建复杂的多列命令行界面

如何安装 @isaacs/cliui?

在项目目录运行 npm install @isaacs/cliui,或使用 pnpm add / yarn add / bun add。

@isaacs/cliui 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@isaacs/cliui 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@isaacs/cliui 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@isaacs/cliui 可以商用吗?

@isaacs/cliui 使用 BlueOak-1.0.0 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@isaacs/cliui 的下载量有多少?

根据 npm 官方下载统计,@isaacs/cliui 在 2026/10/07 – 2026/11/05 这 30 天内被下载 456,239,538 次,日均约 15,207,985 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@isaacs/cliui 还在维护吗?

最新版本 9.0.0 发布于 2026/02/06(9 个月前);至今共发布 2 个版本,其中过去 12 个月发布了 1 个;首次发布于 2023/05/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。