# @isaacs/cliui 中文文档

规范地址：https://npmcn.com/package/%40isaacs/cliui/

版本：9\.0\.0
npm 元数据更新时间：2026-02-05T18:40:56.362Z
中文译文更新时间：2026-11-05T15:02:34.050Z
软件包许可：BlueOak-1\.0\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40isaacs/cliui
原文对照：https://npmcn.com/package/%40isaacs/cliui/?lang=original
项目主页：https://github.com/isaacs/cliui#readme
源码仓库：https://github.com/isaacs/cliui

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：522 kB，73 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=18
- 运行依赖：0 个
- 首次发布：2023-05-02T03:24:28.629Z
- 最新版本发布：2026-02-05T18:40:56.258Z
- 近 30 天下载量：456239538（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：2（近 12 个月 1 个）

## 中文简介

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

## 安装

```sh
npm install @isaacs/cliui
```

也可以使用：`pnpm add @isaacs/cliui`、`yarn add @isaacs/cliui`、`bun add @isaacs/cliui`

## README

# @isaacs/克吕伊

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

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

## V9 的变化

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

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

## 示例

```js
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 装入已修改版本 .

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

![](https://npmcn.com/package/%40isaacs/cliui/screenshot.png)

## 布局 DSL

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

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

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

**作为一个例子...**

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

**将输出 :**

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

## 方法

```js
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 是什么？

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

### 如何安装 @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 和提交记录判断。

