README
emphasize
ANSI syntax highlighting in for your terminal. Like highlight.js (through lowlight).
emphasize supports all 191 syntaxes of highlight.js.
There are three builds of emphasize:
lib/core.js— 0 languageslib/common.js(default) — 35 languageslib/all.js— 191 languages
Install
This package is ESM only:
Node 12+ is needed to use it and it must be imported instead of required.
npm:
npm install emphasize
Use
Say example.css looks as follows:
@font-face {
font-family: Alpha;
src: url('Bravo.otf');
}
body, .charlie, #delta {
color: #bada55;
background-color: rgba(33, 33, 33, 0.33);
font-family: "Alpha", sans-serif;
}
@import url(echo.css);
@media print {
a[href^=http]::after {
content: attr(href)
}
}
And example.js contains the following:
import fs from 'fs'
import {emphasize} from 'emphasize'
const doc = String(fs.readFileSync('example.css'))
const output = emphasize.highlightAuto(doc).value
console.log(output)
Now, running node example yields:
\x1B[32m@font-face\x1B[39m {
\x1B[33mfont-family\x1B[39m: Alpha;
\x1B[33msrc\x1B[39m: \x1B[31murl\x1B[39m(\x1B[36m'Bravo.otf'\x1B[39m);
}
\x1B[32mbody\x1B[39m, \x1B[34m.charlie\x1B[39m, \x1B[34m#delta\x1B[39m {
\x1B[33mcolor\x1B[39m: \x1B[36m#bada55\x1B[39m;
\x1B[33mbackground-color\x1B[39m: \x1B[31mrgba\x1B[39m(\x1B[36m33\x1B[39m, \x1B[36m33\x1B[39m, \x1B[36m33\x1B[39m, \x1B[36m0.33\x1B[39m);
\x1B[33mfont-family\x1B[39m: \x1B[36m"Alpha"\x1B[39m, sans-serif;
}
\x1B[32m@import\x1B[39m url(echo.css);
\x1B[32m@media\x1B[39m print {
\x1B[32ma\x1B[39m\x1B[35m[href^=http]\x1B[39m\x1B[35m::after\x1B[39m {
\x1B[33mcontent\x1B[39m: \x1B[31mattr\x1B[39m(href)
}
}
And looks as follows:

API
This package exports the following identifiers: emphasize.
There is no default export.
emphasize.registerLanguage(name, syntax)
Register a syntax.
Like low.registerLanguage().
emphasize.highlight(language, value[, sheet])
Highlight value as a language grammar.
Like low.highlight(), but the return object’s value property is
a string instead of a hast root.
You can pass in a sheet (Sheet?, optional) to configure the theme.
emphasize.highlightAuto(value[, sheet | options])
Highlight value by guessing its grammar.
Like low.highlightAuto(), but the return object’s value
property is a string instead of a hast root.
You can pass in a sheet (Sheet?, optional) directly or as
options.sheet to configure the theme.
Sheet
A sheet is an object mapping highlight.js classes to functions.
The hljs- prefix must not be used in those classes.
The “descendant selector” (a space) is supported.
Those functions receive a value (string), which they should wrap in ANSI
sequences and return.
For convenience, chalk’s chaining of styles is suggested.
An abbreviated example is as follows:
{
'comment': chalk.gray,
'meta meta-string': chalk.cyan,
'meta keyword': chalk.magenta,
'emphasis': chalk.italic,
'strong': chalk.bold,
'formula': chalk.inverse
}
Emphasize in the browser
If you’re using emphasize/lib/core.js, no syntaxes are included.
Some syntaxes are included if you import emphasize (or
emphasize/lib/common.js).
All syntaxes are available through emphasize/lib/all.js
See Syntaxes in lowlight for which syntaxes are included where.