parseScss.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.getScssError = getScssError;
  6. var _chalk = _interopRequireDefault(require("next/dist/compiled/chalk"));
  7. var _simpleWebpackError = require("./simpleWebpackError");
  8. function _interopRequireDefault(obj) {
  9. return obj && obj.__esModule ? obj : {
  10. default: obj
  11. };
  12. }
  13. const chalk = new _chalk.default.constructor({
  14. enabled: true
  15. });
  16. const regexScssError = /SassError: (.+)\n\s+on line (\d+) [\s\S]*?>> (.+)\n\s*(-+)\^$/m;
  17. function getScssError(fileName, fileContent, err) {
  18. if (err.name !== "SassError") {
  19. return false;
  20. }
  21. const res = regexScssError.exec(err.message);
  22. if (res) {
  23. const [, reason, _lineNumer, backupFrame, columnString] = res;
  24. const lineNumber = Math.max(1, parseInt(_lineNumer, 10));
  25. var ref;
  26. const column = (ref = columnString == null ? void 0 : columnString.length) != null ? ref : 1;
  27. let frame;
  28. if (fileContent) {
  29. try {
  30. const { codeFrameColumns , } = require("next/dist/compiled/babel/code-frame");
  31. frame = codeFrameColumns(fileContent, {
  32. start: {
  33. line: lineNumber,
  34. column
  35. }
  36. }, {
  37. forceColor: true
  38. });
  39. } catch {}
  40. }
  41. return new _simpleWebpackError.SimpleWebpackError(`${chalk.cyan(fileName)}:${chalk.yellow(lineNumber.toString())}:${chalk.yellow(column.toString())}`, chalk.red.bold("Syntax error").concat(`: ${reason}\n\n${frame != null ? frame : backupFrame}`));
  42. }
  43. return false;
  44. }
  45. //# sourceMappingURL=parseScss.js.map