From 2d9c206d728e7161efcc4e47224fbf6ad482d4bc Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Wed, 9 Nov 2022 11:28:44 +0100 Subject: [PATCH] feat(nuxi): wrap and normalize all console outputs --- packages/nuxi/src/cli.ts | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/packages/nuxi/src/cli.ts b/packages/nuxi/src/cli.ts index 4796dec7fe7..cd6cddf2104 100755 --- a/packages/nuxi/src/cli.ts +++ b/packages/nuxi/src/cli.ts @@ -1,6 +1,6 @@ import mri from 'mri' import { red } from 'colorette' -import consola from 'consola' +import consola, { ConsolaReporter } from 'consola' import { checkEngines } from './utils/engines' import { commands, Command, NuxtCommand } from './commands' import { showHelp } from './utils/help' @@ -39,7 +39,29 @@ async function _main () { } // Wrap all console logs with consola for better DX -consola.wrapConsole() +consola.wrapAll() + +// Filter out unwanted logs +// TODO: Use better API from consola for intercepting logs +const wrapReporter = (reporter: ConsolaReporter) => { + log (logObj, ctx) { + if (!logObj.args || !logObj.args.length) { return } + const msg = logObj.args[0] + if (typeof msg === 'string' && !process.env.DEBUG) { + // Hide vue-router 404 warnings + if (msg.startsWith('[Vue Router warn]: No match found for location with path')) { + return + } + // Hide sourcemap warnings related to node_modules + if (msg.startsWith('Sourcemap') && msg.includes('node_modules')) { + return + } + } + return reporter.log(logObj, ctx) + } +} +// @ts-expect-error +consola._reporters = consola._reporters.map(wrapReporter) process.on('unhandledRejection', err => consola.error('[unhandledRejection]', err)) process.on('uncaughtException', err => consola.error('[uncaughtException]', err))