zoro-cli
Version:
https://github.com/vuejs/vue-cli
47 lines (43 loc) • 1.21 kB
JavaScript
const chalk = require('chalk')
const rules = [
{
type: 'cant-resolve-loader',
re: /Can't resolve '(.*loader)'/,
msg: (e, match) =>
`Failed to resolve loader: ${chalk.yellow(match[1])}\n` +
'You may need to install it.',
},
]
exports.transformer = error => {
if (error.webpackError) {
const message =
typeof error.webpackError === 'string'
? error.webpackError
: error.webpackError.message || ''
for (const { re, msg, type } of rules) {
const match = message.match(re)
if (match) {
return {
...error,
// type is necessary to avoid being printed as defualt error
// by friendly-error-webpack-plugin
type,
shortMessage: msg(error, match),
}
}
}
// no match, unknown webpack error withotu a message.
// friendly-error-webpack-plugin fails to handle this.
if (!error.message) {
return { ...error, type: 'unknown-webpack-error', shortMessage: message }
}
}
return error
}
exports.formatter = errors => {
errors = errors.filter(e => e.shortMessage)
if (errors.length) {
return errors.map(e => e.shortMessage)
}
return errors
}