Spaces:
Sleeping
Sleeping
| const { chalk } = require('@vue/cli-shared-utils') | |
| 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 Object.assign({}, error, { | |
| // type is necessary to avoid being printed as default error | |
| // by friendly-error-webpack-plugin | |
| type, | |
| shortMessage: msg(error, match) | |
| }) | |
| } | |
| } | |
| // no match, unknown webpack error without a message. | |
| // friendly-error-webpack-plugin fails to handle this. | |
| if (!error.message) { | |
| return Object.assign({}, 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) | |
| } | |
| } | |