日志

源码
Nuxt Kit 提供了一组实用工具,帮助你处理日志。这些函数允许你记录带有额外功能的消息。

Nuxt 提供了一个日志实例,你可以使用它记录带有额外功能的消息。useLogger 允许你获取一个日志实例。

useLogger

返回一个日志实例。它在底层使用 consola

用法

import { defineNuxtModule, useLogger } from '@nuxt/kit'

export default defineNuxtModule({
  setup (options, nuxt) {
    const logger = useLogger('my-module')

    logger.info('Hello from my module!')
  },
})

类型

function useLogger (tag?: string, options?: NuxtLoggerOptions): NuxtLogger

参数

tag:用于在所有日志消息后添加的标签,显示在时间戳右侧。

options:日志选项,例如 levelreportersdefaultsformatOptions

示例

import { defineNuxtModule, useLogger } from '@nuxt/kit'

export default defineNuxtModule({
  setup (options, nuxt) {
    const logger = useLogger('my-module', { level: options.quiet ? 0 : 3 })

    logger.info('Hello from my module!')
  },
})

useTerminal

返回一组用于与用户终端交互的原语。当 Nuxt 在交互式主机中运行时,例如 nuxt dev 终端 UI,提示、任务和通知会交由该主机处理,因此可以在同一位置进行响应和呈现。否则,它们会回退到日志记录。

用法

declare function runPackageInstall (name: string): Promise<void>
// ---cut---
import { defineNuxtModule, useTerminal } from '@nuxt/kit'

export default defineNuxtModule({
  async setup () {
    const terminal = useTerminal()

    const install = await terminal.prompt('Do you want to install `my-module`?', { type: 'confirm' })
    if (!install) {
      return
    }

    const task = terminal.startTask('Installing `my-module`...')
    // run your actual task
    await runPackageInstall('my-module')
    task.stop('Installed `my-module`')
  },
})

类型

function useTerminal (): NuxtTerminal

interface NuxtTerminal {
  readonly interactive: boolean
  withTerminal: <T>(work: () => Promise<T>) => Promise<T>
  prompt: (message: string, options?: NuxtPromptOptions) => Promise<any>
  startTask: (label: string) => NuxtTerminalTask
  notify: (notification: NuxtTerminalNotification) => NuxtTerminalNotice
}

属性

interactive:是否存在交互式主机。当其为 false 时,下面的原语会改为记录到当前进程流。

withTerminal:在 work 的执行期间借用终端,暂停任何主机 UI 并释放 stdin。当你需要直接向终端写入或从 stdin 读取时使用它。并发调用会被串行处理,而在借用期间发起的嵌套调用会立即运行。

prompt:向用户提问,在提示保持打开期间借用终端。接受与 logger.prompt 相同的选项。

startTask:启动一个长时间运行的任务,并在可用时将其呈现在主机的状态界面上。使用 task.stop(message?, outcome?) 完成任务,或使用 task.update(label) 更改其标签。

notify:显示一条消息,并将其保留在屏幕上,直到用户确认或调用 notice.dismiss()notice.dismissed 会在通知消失后完成。