跳至主要内容

@babel/code-frame

安装

npm install --save-dev @babel/code-frame

用法

JavaScript
import { codeFrameColumns } from "@babel/code-frame";

const rawLines = `class Foo {
constructor()
}`;
const location = { start: { line: 2, column: 16 } };

const result = codeFrameColumns(rawLines, location, {
/* options */
});

console.log(result);
  1 | class Foo {
> 2 | constructor()
| ^
3 | }

如果列号未知,可以省略。

您也可以在 location 中传递 end 哈希值。

JavaScript
import { codeFrameColumns } from "@babel/code-frame";

const rawLines = `class Foo {
constructor() {
console.log("hello");
}
}`;
const location = {
start: { line: 2, column: 17 },
end: { line: 4, column: 3 },
};

const result = codeFrameColumns(rawLines, location, {
/* options */
});

console.log(result);
  1 | class Foo {
> 2 | constructor() {
| ^
> 3 | console.log("hello");
| ^^^^^^^^^^^^^^^^^^^^^^^^^
> 4 | }
| ^^^
5 | };

选项

highlightCode

boolean,默认为 false

切换语法高亮,将代码高亮为终端的 JavaScript。

linesAbove

number,默认为 2

调整要在错误上方显示的行数。

linesBelow

number,默认为 3

调整要在错误下方显示的行数。

forceColor

boolean,默认为 false

启用此选项可强制将代码语法高亮为 JavaScript(对于非终端);覆盖 highlightCode

message

string,否则为空

传入一个字符串,以便在代码中突出显示的位置旁边内联显示(如果可能)。如果无法内联放置,则会将其放置在代码框上方。

1 | class Foo {
> 2 | constructor()
| ^ Missing {
3 | };

从先前版本升级

在版本 7 之前,此模块公开的唯一 API 用于单行和可选的列指针。旧的 API 现在将记录弃用警告。

新的 API 采用 location 对象,类似于 AST 中可用的对象。

这是一个已弃用(但仍然可用)的 API 示例

JavaScript
import codeFrame from "@babel/code-frame";

const rawLines = `class Foo {
constructor()
}`;
const lineNumber = 2;
const colNumber = 16;

const result = codeFrame(rawLines, lineNumber, colNumber, {
/* options */
});

console.log(result);

要使用新的 API 获得相同的高亮显示

JavaScript
import { codeFrameColumns } from "@babel/code-frame";

const rawLines = `class Foo {
constructor() {
console.log("hello");
}
}`;
const location = { start: { line: 2, column: 16 } };

const result = codeFrameColumns(rawLines, location, {
/* options */
});

console.log(result);