@nuxt/friendly-errors-webpack-plugin
Version:
Recognizes certain classes of webpack errors and cleans, aggregates and prioritizes them to provide a better Developer Experience
64 lines (53 loc) • 1.44 kB
JavaScript
const { colors, formatTitle, formatText, clearConsole } = require('../utils/log')
const chalk = require('chalk')
const stringWidth = require('string-width')
class BaseReporter {
constructor () {
this.enabled = true
this.initLevels()
}
enable () {
this.enabled = true
}
log () {
if (this.enabled) {
console.log.apply(console, arguments)
}
}
initLevels () {
for (const level of Object.keys(colors)) {
this[level] = (title, message) => {
if (!this.enabled) return
if (message === undefined) {
message = title
this.log(message)
return
}
title = formatTitle(level, title)
message = formatText(level, message)
if (process.env.NODE_ENV !== 'test') {
message = this.appendTimestamp(title, message)
}
this.log(title, message)
this.log()
}
}
}
appendTimestamp (title, message) {
// Make timestamp appear at the end of the line
const line = `${title} ${message}`
const dateString = chalk.grey(new Date().toLocaleTimeString())
let logSpace = process.stdout.columns - stringWidth(line) - stringWidth(dateString)
if (logSpace <= 0) {
logSpace = 10
}
return `${message}${' '.repeat(logSpace)}${dateString}`
}
clearConsole () {
if (this.enabled) {
clearConsole()
}
}
}
module.exports = BaseReporter