日志
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:日志选项,例如 level、reporters、defaults 和 formatOptions。
示例
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 会在通知消失后完成。