Security News
New Proposed CISA Mandate Would Require Critical Infrastructure to Report Ransom Payments Within 24 Hours
CISA has proposed a set of new rules that would require critical infrastructure to report cyber incidents and ransom payments.
@babel/code-frame
Advanced tools
Generate errors that contain a code frame that point to source locations.
Weekly downloads
Package description
The @babel/code-frame package is used to generate a string representing code with a specific error highlighted. It is often used to produce more readable error messages in development tools by showing the code snippet where an error has occurred along with line and column numbers.
Highlighting syntax errors in code
This feature allows developers to highlight syntax errors in their code. The code sample shows how to use the codeFrameColumns function to generate a string that highlights the location of an error in the source code.
const { codeFrameColumns } = require('@babel/code-frame');
const rawLines = `class Foo {
constructor()
}
`;
const location = { start: { line: 2, column: 15 } };
const result = codeFrameColumns(rawLines, location, {
highlightCode: true
});
console.log(result);
Chalk is a popular npm package for styling terminal strings. While it doesn't generate code frames, it can be used to colorize text and could be combined with other tools to highlight specific parts of code in the terminal.
Cardinal is a syntax highlighter for JavaScript code that can be used in the terminal. It's similar to @babel/code-frame in that it can be used to make code more readable, but it focuses on syntax highlighting rather than pinpointing specific locations of errors.
Highlight.js is a syntax highlighter for the web. It supports many languages and can be used to highlight code blocks on web pages. Unlike @babel/code-frame, it is not specifically designed for highlighting error locations, but it can be used to enhance the readability of code snippets.
Readme
Generate errors that contain a code frame that point to source locations.
npm install --save-dev @babel/code-frame
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 | }
If the column number is not known, you may omit it.
You can also pass an end
hash in location
.
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
, defaults to false
.
Toggles syntax highlighting the code as JavaScript for terminals.
linesAbove
number
, defaults to 2
.
Adjust the number of lines to show above the error.
linesBelow
number
, defaults to 3
.
Adjust the number of lines to show below the error.
forceColor
boolean
, defaults to false
.
Enable this to forcibly syntax highlight the code as JavaScript (for non-terminals); overrides highlightCode
.
message
string
, otherwise nothing
Pass in a string to be displayed inline (if possible) next to the highlighted location in the code. If it can't be positioned inline, it will be placed above the code frame.
1 | class Foo {
> 2 | constructor()
| ^ Missing {
3 | };
Prior to version 7, the only API exposed by this module was for a single line and optional column pointer. The old API will now log a deprecation warning.
The new API takes a location
object, similar to what is available in an AST.
This is an example of the deprecated (but still available) API:
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);
To get the same highlighting using the new API:
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);
FAQs
Generate errors that contain a code frame that point to source locations.
The npm package @babel/code-frame receives a total of 48,128,498 weekly downloads. As such, @babel/code-frame popularity was classified as popular.
We found that @babel/code-frame demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISA has proposed a set of new rules that would require critical infrastructure to report cyber incidents and ransom payments.
Security News
Redis is no longer OSS, breaking its explicit commitment to remain under the BSD 3-Clause License forever. This has angered contributors who are now working to fork the software.
Product
Socket AI now enables 'AI detected potential malware' alerts by default, ensuring users benefit from AI-powered state-of-the-art malware detection without needing to opt-in.