@babel/code-frame
安装
- npm
- Yarn
- pnpm
npm install --save-dev @babel/code-frame
yarn add --dev @babel/code-frame
pnpm add --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);