@davidwells/box-logger

中文文档
2.0.8发布于 2026/01/01MITTypeScriptCommonJS近 30 天下载 2167

用于在控制台中文本周围创建框的简单工具

中文使用文档
文档目录21 节
  1. 安装
  2. 使用量
  3. 方框
  4. 堆叠的框
  5. 水平框
  6. 页眉
  7. 线条
  8. 已打入的备选案文
  9. 处理错误
  10. 实例
  11. 基本方框
  12. 有标题的圆形框
  13. 粗体框
  14. 标题( 无左边框)
  15. 带文字的行
  16. 以左右为行
  17. 公用事业
  18. 终端大小
  19. 获取内网
  20. 许可证
  21. 其他表达式

选项

用于在终端中创建格式化文本框、标题和行的简单工具.

安装

npm install @davidwells/box-logger

使用量

方框

以自定义的边框、 粘贴和样式创建文本周围的框 .

const { makeBox, logBox } = require('@davidwells/box-logger')

// Simple usage with a string
console.log(makeBox('Hello World'))

// With options
console.log(makeBox({
  content: 'Hello World',
  textAlign: 'center',
  paddingLeft: 4,
  paddingRight: 4,
  borderColor: 'green',
  borderStyle: 'bold'
}))

// With title and content
console.log(makeBox({
  title: 'My Title',
  content: 'Box content here',
  borderStyle: 'rounded'
}))

// Hex colors are supported
console.log(makeBox({
  content: 'Custom colors',
  borderColor: '#4287f5',
  backgroundColor: '#1a1a2e'
}))

// Dynamic content - function receives { innerWidth } for sizing
console.log(makeBox({
  title: 'Dynamic Width',
  content: ({ innerWidth }) => generateContent({ width: innerWidth }),
  paddingLeft: 1,
  paddingRight: 0
}))

// Async content - use makeBoxAsync for async functions
const box = await makeBoxAsync({
  title: 'Async Content',
  content: async ({ innerWidth }) => await fetchData({ width: innerWidth })
})
console.log(box)

// Call logger directly
logBox('Log the box directly')

框选项

选项类型默认说明
content字符串 QQ 区域函数- 说吧内容(或接收的函数) { innerWidth }(中文(简体) )
title字符串 QQ 区域- 说吧框上方的标题区域
fontStyle'正常' '粗体'"正常的"字体样式
textAlign'左''''"中''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''左边文本对齐
color字符串- 说吧文本颜色( 字符颜色或十六进制像“ #ff00” )
backgroundColor字符串- 说吧背景颜色( 颜色或十六进制)
paddingTop编号0 个内容前的新行
paddingBottom编号0 个内容后的新行
paddingLeft编号2个左侧垫入空格
paddingRight编号2个右补丁空格
borderColor字符串- 说吧边框颜色( 字符颜色或十六进制)
borderStyle字符串"正常的"边框样式(见下文)
borderTop布尔真实显示上边框
borderBottom布尔真实显示下边框
borderLeft布尔真实显示左边框
borderRight布尔真实显示右边框
borderText字符串- 说吧文本嵌入上边框
borderTextColor字符串- 说吧边框文本的颜色
borderTextAlign'左''''"中''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''左边边框文本对齐
width数字 qq 字符串- 说吧固定宽度
minWidth数字 qq 字符串- 说吧最小宽度( 全宽为“ 100% ” )
maxWidth数字 qq 字符串终端宽度最大宽度
marginTop编号0 个框前的新行
marginBottom编号0 个框后新建行
marginLeft编号0 个每行前的空格
wrapText布尔真实将文字包入框中
type字符串- 说吧框类型 : “ 成功 ” 、 “ 错误 ” 、 “ 警告 ” 、 “ info ”
icon字符串- 说吧自定义图标
header布尔虚假页眉模式( 无左边框)
edges对象- 说吧自定义边框符号

边框样式

  • normal - 标准框绘图字符(QQ)
  • rounded - 圆角(XQ)
  • bold - 重度边界(XQ)
  • double - 双线边界(XQ)
  • dashed - 扭曲的横向行线( )
  • dotted - 点点水平线( )
  • thick - 块字符 (Q)
  • half-thick - 半块边界( )
  • ultra-thick - 全部区块边界(
  • ascii - ASCII倒计时(-)
  • dots - 点数(-)
  • circles - 圆圈(0个)
  • stars - 闪光星星(QQ)
  • triple - 三行线( )
  • transparent - 隐形边界(空间)
  • none - 根本没有边界
  • filled - 与背景相通

区域对象

标题和内容可以是字符串或节对象,以进行更多的控制:

makeBox({
  title: {
    left: 'Title',
    right: 'v1.0.0',
    fontStyle: 'bold',
    color: 'cyan'
  },
  content: {
    left: 'Description',
    right: 'Status: OK',
    color: 'green'
  }
})

区域属性 : left, (中文(简体) ), right, (中文(简体) ), center, (中文(简体) ), color, (中文(简体) ), fontStyle, (中文(简体) ), paddingLeft, (中文(简体) ), paddingRight, (中文(简体) ), paddingTop, (中文(简体) ), paddingBottom, (中文(简体) ), truncate

堆叠的框

在共享边框上垂直堆放多个框 :

const { makeStackedBoxes } = require('@davidwells/box-logger')

console.log(makeStackedBoxes([
  { title: 'Box 1', content: 'First box content' },
  { title: 'Box 2', content: 'Second box content' },
  { title: 'Box 3', content: 'Third box content' }
], {
  borderStyle: 'rounded',
  borderColor: 'cyan'
}))

水平框

并排渲染盒 :

const { makeHorizontalBoxes } = require('@davidwells/box-logger')

console.log(makeHorizontalBoxes([
  { content: 'Left box' },
  { content: 'Middle box' },
  { content: 'Right box' }
], {
  gap: 2,
  mergeBoxes: true  // Merge adjacent borders
}))

选项 : gap, (中文(简体) ), marginLeft, (中文(简体) ), connectRows, (中文(简体) ), justifyContent ("弹性启动","弹性端","间距"), wrap, (中文(简体) ), mergeBoxes

页眉

创建标题( 无左边框的框) :

const { makeHeader, logHeader } = require('@davidwells/box-logger')

// Simple usage
console.log(makeHeader('Hello World'))

// With options
console.log(makeHeader({
  content: 'Hello World',
  borderColor: 'blue'
}))

// Typed variants
logHeader.success('Operation completed')
logHeader.error('An error occurred')
logHeader.warning('Please be careful')
logHeader.info('Information')

标题使用与 Box 相同的选项( 这只是 header: true 盖下.

线条

以可选文本创建水平行 :

const { makeLine, logLine } = require('@davidwells/box-logger')

// Simple line
console.log(makeLine())

// Line with centered text
console.log(makeLine('Section Title'))

// Line with options
console.log(makeLine({
  text: 'Styled text',
  fontStyle: 'bold',
  borderColor: 'green'
}))

// Left and right text
console.log(makeLine({
  left: 'Section',
  right: 'v1.2.3',
  borderColor: 'cyan'
}))

// All three positions
console.log(makeLine({
  left: 'Left',
  center: 'Center',
  right: 'Right'
}))

行选项

选项类型默认说明
text字符串- 说吧要显示的文本( 用文本对齐使用)
left字符串- 说吧左对齐文本
right字符串- 说吧右对齐文本
center字符串- 说吧中央对齐文本
color字符串- 说吧文本颜色
backgroundColor字符串- 说吧文本的背景颜色
lineBackgroundColor字符串- 说吧整个行的背景
fontStyle'正常' '粗体'"正常的"字体样式
borderColor字符串- 说吧线条颜色
borderStyle字符串"正常的"线条样式
textAlign'左''''"中''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''中间文本对齐
paddingLeft编号页:1左侧挂起
paddingRight编号页:1右侧粘贴
minWidth数字 qq 字符串- 说吧最小宽度
maxWidth数字 qq 字符串终端宽度最大宽度
lines编号- 说吧生成多行空行

已打入的备选案文

所有日志功能都有有自动图标和颜色的输入变体:

const { logBox, logHeader, logLine } = require('@davidwells/box-logger')

// Box variants
logBox.success('Operation completed successfully')
logBox.error('An error occurred')
logBox.warning('Please be careful')
logBox.info('Here is some information')

// Header variants
logHeader.success('Success!')
logHeader.error('Error!')

// Line variants
logLine.success('Success line')
logLine.error('Error line')

处理错误

向logBox传递一个错误对象用于格式化错误显示 :

try {
  throw new Error('Something went wrong')
} catch (err) {
  logBox.error(err)  // Shows error name, message, and cleaned stack trace
}

实例

基本方框

┌─────────────┐
│  Hello World  │
└─────────────┘

有标题的圆形框

╭──────────────────────╮
│  My Title            │
├──────────────────────┤
│  Content goes here   │
╰──────────────────────╯

粗体框

┏━━━━━━━━━━━━━━━━━━━━━━┓
┃  Hello World         ┃
┗━━━━━━━━━━━━━━━━━━━━━━┛

标题( 无左边框)

──────────────────────────────┐
  Hello World                 │
──────────────────────────────┘

带文字的行

────────── Section Title ──────────

以左右为行

──── Section ──────────── v1.2.3 ────

公用事业

终端大小

获取当前终端尺寸 :

const { terminalSize } = require('@davidwells/box-logger')

const { columns, rows } = terminalSize()
console.log(`Terminal is ${columns}x${rows}`)

获取内网

计算框配置的内在内容宽度 :

const { getInnerWidth } = require('@davidwells/box-logger')

const innerWidth = getInnerWidth({
  paddingLeft: 1,
  paddingRight: 0,
  marginLeft: 5
})
// Use innerWidth to pre-size content before calling makeBox

许可证

麻省理工学院

其他表达式

版本与发布记录

@davidwells/box-logger 共发布 31 个版本,首次发布于 2025/04/05;过去 12 个月发布了 10 个版本。

版本发布日期距今
2.0.8latest2026/01/0110 个月前
2.0.72026/01/0110 个月前
2.0.62025/12/0511 个月前
2.0.52025/12/0511 个月前
2.0.42025/12/0511 个月前
2.0.32025/11/2811 个月前

关于 @davidwells/box-logger 的常见问题

@davidwells/box-logger 是什么?

用于在控制台中文本周围创建框的简单工具

如何安装 @davidwells/box-logger?

在项目目录运行 npm install @davidwells/box-logger,或使用 pnpm add / yarn add / bun add。

@davidwells/box-logger 支持 TypeScript 吗?

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

@davidwells/box-logger 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@davidwells/box-logger 可以商用吗?

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

@davidwells/box-logger 的下载量有多少?

根据 npm 官方下载统计,@davidwells/box-logger 在 2026/10/12 – 2026/11/10 这 30 天内被下载 2,167 次,日均约 72 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@davidwells/box-logger 还在维护吗?

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