@orta/ansi-to-html

Convert ansi escaped text streams to html.

Usage no npm install needed!

<script type="module">
  import ortaAnsiToHtml from 'https://cdn.skypack.dev/@orta/ansi-to-html';
</script>

README

Ansi to Html

This was originally a port of the ansi to html converter from bcat to JavaScript. It has since undergone quite a lot of modification.

It has a few additions:

  • The API has been altered to accept options in the constructor, and input in toHtml().
  • ANSI codes for setting the foreground or background color to default are handled
  • the 'erase in line' escape code (\x1b[K) is dropped from the output.

Installation

npm install ansi-to-html

Usage

const Convert = require('ansi-to-html');
const convert = new Convert();

console.log(convert.toHtml('\x1b[30mblack\x1b[37mwhite'));

/*
    prints:
    <span style="color:#000">black<span style="color:#AAA">white</span></span>
*/

Command line usage

When using ansi-to-html from the command line the stream option is set to true. Other options can be provided. See ansi-to-html -h for more detail.

Process a file

ansi-to-html the_filename

From STDIN

git log | ansi-to-html

Options

Options can be be passed to the constructor to customize behaviour.

fg <CSS color values>. The default foreground color used when reset color codes are encountered.

bg <CSS color values>. The default background color used when reset color codes are encountered.

newline true or false. Convert newline characters to <br/>.

space true or false (default). Convert any two sequential spaces to &#xa0; (a space followed by a non-breaking space). You will probably wish to use this with a fixed width font, e.g., font-family: monospace;.

tabs null (default) or a number. Converts tabs to a given number of non-breaking spaces (&#xa0;).

escapeXML true or false. Generate HTML/XML entities.

stream true or false. Save style state across invocations of toHtml().

colors Object/Array (with values 0 - 255 containing CSS color values). Can override specific colors or the entire ANSI palette

Default options

{
    fg: '#FFF',
    bg: '#000',
    newline: false,
    escapeXML: false,
    stream: false
}

Development

Once you have the git repository cloned, install the dependencies:

cd ansi-to-html
npm install

Lint

npm run lint

Build

npm run build
  • Builds the /src files by running babel.
  • Saves the built files in /lib output directory.
  • Recommended to run babel in Watch mode - will re-build the project each time the files are changed.
npm run build:watch

Test

npm test
  • Note: Runs the tests against the built files (in the /lib directory).
  • You also run the tests in watch mode (will rerun tests when files are changed).
  • Recommended to run the build in watch mode as well to re-build the project before the tests are run.
npm run test:watch