Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
marked-terminal
Advanced tools
The marked-terminal package is a custom renderer for the marked library, allowing Markdown content to be rendered in the terminal. It converts Markdown into ANSI escape codes to display styled text and other elements directly in the command line interface. This is particularly useful for CLI applications that want to display rich text content or documentation in a more readable and visually appealing format.
Rendering Headers
This feature allows the rendering of Markdown headers in the terminal with appropriate styling to distinguish them from other text.
const TerminalRenderer = require('marked-terminal');
const marked = require('marked');
marked.setOptions({
renderer: new TerminalRenderer()
});
console.log(marked('# Header 1'));
// This will output a styled Header 1 in the terminal
Rendering Links
This feature enables the display of clickable links in the terminal, making it easier to reference web resources directly from the command line output.
const TerminalRenderer = require('marked-terminal');
const marked = require('marked');
marked.setOptions({
renderer: new TerminalRenderer()
});
console.log(marked('[GitHub](https://github.com)'));
// This will output the text 'GitHub' as a clickable link in the terminal, if supported, or display the URL next to the text.
Rendering Lists
This feature supports the rendering of bullet and numbered lists, enhancing the readability of list information in the terminal.
const TerminalRenderer = require('marked-terminal');
const marked = require('marked');
marked.setOptions({
renderer: new TerminalRenderer()
});
console.log(marked('- Item 1\n- Item 2'));
// This will output a styled list with 'Item 1' and 'Item 2' as its elements.
Chalk is a popular npm package for styling terminal text with ANSI colors but does not directly support Markdown. Unlike marked-terminal, users need to manually specify styles for each piece of text.
ansi-styles allows for styling terminal output with ANSI escape codes. It provides lower-level access to styling compared to marked-terminal, which abstracts Markdown rendering into styled terminal output.
cli-md is a tool similar to marked-terminal that renders Markdown files in the terminal. It focuses on converting Markdown files to terminal output, similar to marked-terminal, but may have different rendering options and styles.
Custom Renderer for marked allowing for printing Markdown to the Terminal. Supports pretty tables, syntax highlighting for javascript, and overriding all colors and styles.
Could for instance be used to print usage information.
npm install marked marked-terminal
import { marked } from 'marked';
import { markedTerminal } from 'marked-terminal';
marked.use(markedTerminal([options][, highlightOptions]));
marked.parse('# Hello \n This is **markdown** printed in the `terminal`');
const marked = require('marked');
const TerminalRenderer = require('marked-terminal');
marked.setOptions({
// Define custom renderer
renderer: new TerminalRenderer()
});
// Show the parsed data
console.log(
marked('# Hello \n This is **markdown** printed in the `terminal`')
);
This will produce the following:
Also have support for syntax highlighting using cli-highlight. You can override highlighting defaults by passing in settings as the second argument for TerminalRenderer.
Having the following markdown input:
```js var foo = function(bar) { console.log(bar); }; foo('Hello'); ```
...we will convert it into terminal format:
// Show the parsed data
console.log(marked(exampleSource));
This will produce the following:
Constructur: new TerminalRenderer([options][, highlightOptions])
options
Optional Used to override default styling.
Default values are:
var defaultOptions = {
// Colors
code: chalk.yellow,
blockquote: chalk.gray.italic,
html: chalk.gray,
heading: chalk.green.bold,
firstHeading: chalk.magenta.underline.bold,
hr: chalk.reset,
listitem: chalk.reset,
table: chalk.reset,
paragraph: chalk.reset,
strong: chalk.bold,
em: chalk.italic,
codespan: chalk.yellow,
del: chalk.dim.gray.strikethrough,
link: chalk.blue,
href: chalk.blue.underline,
// Formats the bulletpoints and numbers for lists
list: function (body, ordered) {/* ... */},
// Reflow and print-out width
width: 80, // only applicable when reflow is true
reflowText: false,
// Should it prefix headers?
showSectionPrefix: true,
// Whether or not to undo marked escaping
// of enitities (" -> " etc)
unescape: true,
// Whether or not to show emojis
emoji: true,
// Options passed to cli-table3
tableOptions: {},
// The size of tabs in number of spaces or as tab characters
tab: 3 // examples: 4, 2, \t, \t\t
image: function (href, title, text) {} // function for overriding the default image handling.
};
marked.setOptions({
renderer: new TerminalRenderer({
codespan: chalk.underline.magenta
})
});
highlightOptions
Options passed into cli-highlight. See readme there to see what options to pass.
See more examples
FAQs
A custom render for marked to output to the Terminal
We found that marked-terminal demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer 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
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.