跳到主要内容
版本:3.8.1

📦 logger

一个封装的日志器,用于语义化地格式化控制台消息。

Docusaurus 生态系统中的包作者应鼓励使用此包来提供统一的日志格式。

API

它以默认导出方式导出一个单一对象:loggerlogger 具有以下属性:

  • 一些有用的颜色。
    • 红色
    • 黄色
    • 绿色
    • 粗体
    • 暗淡
  • 格式化器。这些函数都具有 (msg: unknown) => string 的签名。请注意,它们的实现不作保证。您应该只关注它们的语义。
    • path:格式化文件路径。
    • url:格式化 URL。
    • name:格式化标识符。
    • code:格式化代码片段。
    • subdue:弱化文本。
    • num:格式化数字。
  • interpolate 函数。它是一个模板字面量标签。其语法可在下方找到。
  • 日志函数。所有日志函数既可以作为普通函数(类似于 console.log 系列,但只接受一个参数)使用,也可以作为模板字面量标签使用。
    • info:打印信息。
    • warn:打印需要注意的警告。
    • error:打印错误(不一定会终止程序),表示存在重大问题。
    • success:打印成功消息。
  • report 函数。它接受一个 ReportingSeverity 值(ignorelogwarnthrow),并根据严重性报告消息。
关于 error 格式化器的一点说明

请注意,error 消息即使不导致程序挂起,也可能会引起混淆。当用户检查日志发现 [ERROR] 时,即使构建成功,他们也会认为出了问题。请谨慎使用。

Docusaurus 仅在抛出错误之前立即打印消息时,或当用户将 onBrokenLink 等的报告严重性设置为 "error" 时,才使用 logger.error

此外,warnerror 会将整个消息着色,以更好地引起注意。如果您要打印关于错误的大段帮助文本,最好使用 logger.info

使用模板字面量标签

模板字面量标签会评估模板和嵌入的表达式。interpolate 返回一个新字符串,而其他日志函数则将其打印出来。以下是典型用法:

import logger from '@docusaurus/logger';

logger.info`Hello name=${name}! You have number=${money} dollars. Here are the ${
items.length > 1 ? 'items' : 'item'
} on the shelf: ${items}
To buy anything, enter code=${'buy x'} where code=${'x'} is the item's name; to quit, press code=${'Ctrl + C'}.`;

嵌入式表达式可以选择性地在其前面带有一个标志,格式为 [a-z]+=(几个小写字母,后跟一个等号,直接位于嵌入式表达式之前)。如果表达式前面没有任何标志,则按原样打印。否则,它会使用以下格式化器之一进行格式化:

  • path=path
  • url=url
  • name=name
  • code=code
  • subdue=subdue
  • number=num

如果表达式是一个数组,它会通过 `\n- ${array.join('\n- ')}\n` 进行格式化(注意它会自动获得一个前导换行符)。每个成员都会单独格式化,而项目符号不会被格式化。因此,您会看到上述消息打印为:

Some text output in the terminal, containing array, code, name, and number formatting