UNPKG

1.36 kBJavaScriptView Raw
1/* eslint-disable */
2// https://github.com/vuejs/vue-cli/blob/dev/packages/%40vue/cli-service/lib/util/resolveLoaderError.js
3const chalk = require('chalk')
4
5const rules = [
6 {
7 type: 'cant-resolve-loader',
8 re: /Can't resolve '(.*loader)'/,
9 msg: (e, match) => (
10 `Failed to resolve loader: ${chalk.yellow(match[1])}\n` +
11 `You may need to install it.`
12 )
13 }
14]
15
16exports.transformer = error => {
17 if (error.webpackError) {
18 const message = typeof error.webpackError === 'string'
19 ? error.webpackError
20 : error.webpackError.message || ''
21 for (const { re, msg, type } of rules) {
22 const match = message.match(re)
23 if (match) {
24 return Object.assign({}, error, {
25 // type is necessary to avoid being printed as defualt error
26 // by friendly-error-webpack-plugin
27 type,
28 shortMessage: msg(error, match)
29 })
30 }
31 }
32 // no match, unknown webpack error without a message.
33 // friendly-error-webpack-plugin fails to handle this.
34 if (!error.message) {
35 return Object.assign({}, error, {
36 type: 'unknown-webpack-error',
37 shortMessage: message
38 })
39 }
40 }
41 return error
42}
43
44exports.formatter = errors => {
45 errors = errors.filter(e => e.shortMessage)
46 if (errors.length) {
47 return errors.map(e => e.shortMessage)
48 }
49}