| | import { bold, cyan, red, yellow } from '../../../../lib/picocolors' |
| | import { SimpleWebpackError } from './simpleWebpackError' |
| |
|
| | const regexCssError = |
| | /^(?:CssSyntaxError|SyntaxError)\n\n\((\d+):(\d*)\) (.*)$/s |
| |
|
| | export function getCssError( |
| | fileName: string, |
| | err: Error |
| | ): SimpleWebpackError | false { |
| | if ( |
| | !( |
| | (err.name === 'CssSyntaxError' || err.name === 'SyntaxError') && |
| | (err as any).stack === false && |
| | !(err instanceof SyntaxError) |
| | ) |
| | ) { |
| | return false |
| | } |
| |
|
| | |
| |
|
| | const res = regexCssError.exec(err.message) |
| | if (res) { |
| | const [, _lineNumber, _column, reason] = res |
| | const lineNumber = Math.max(1, parseInt(_lineNumber, 10)) |
| | const column = Math.max(1, parseInt(_column, 10)) |
| |
|
| | return new SimpleWebpackError( |
| | `${cyan(fileName)}:${yellow(lineNumber.toString())}:${yellow( |
| | column.toString() |
| | )}`, |
| | red(bold('Syntax error')).concat(`: ${reason}`) |
| | ) |
| | } |
| |
|
| | return false |
| | } |
| |
|