diff --git a/packages/babel-code-frame/package.json b/packages/babel-code-frame/package.json index e2aedc8c9f..037a3e1c18 100644 --- a/packages/babel-code-frame/package.json +++ b/packages/babel-code-frame/package.json @@ -12,7 +12,6 @@ "chalk": "^1.1.0", "esutils": "^2.0.2", "js-tokens": "^1.0.1", - "line-numbers": "^0.2.0", "repeating": "^1.1.3" } } diff --git a/packages/babel-code-frame/src/index.js b/packages/babel-code-frame/src/index.js index 1711930255..90e515d814 100644 --- a/packages/babel-code-frame/src/index.js +++ b/packages/babel-code-frame/src/index.js @@ -1,7 +1,5 @@ /* eslint indent: 0 */ -/* eslint max-len: 0 */ -import lineNumbers from "line-numbers"; import repeating from "repeating"; import jsTokens from "js-tokens"; import esutils from "esutils"; @@ -97,20 +95,19 @@ export default function ( end = lines.length; } - let frame = lineNumbers(lines.slice(start, end), { - start: start + 1, - before: " ", - after: " | ", - transform(params) { - if (params.number !== lineNumber) { - return; - } + let numberMaxWidth = String(end).length; - if (colNumber) { - params.line += `\n${params.before}${repeating(" ", params.width)}${params.after}${repeating(" ", colNumber - 1)}^`; - } - - params.before = params.before.replace(/^./, ">"); + let frame = lines.slice(start, end).map((line, index) => { + let number = start + 1 + index; + let paddedNumber = ` ${number}`.slice(-numberMaxWidth); + let gutter = ` ${paddedNumber} | `; + if (number === lineNumber) { + let markerLine = colNumber + ? `\n ${gutter.replace(/\d/g, " ")}${repeating(" ", colNumber - 1)}^` + : ""; + return `>${gutter}${line}${markerLine}`; + } else { + return ` ${gutter}${line}`; } }).join("\n");