@ogma/styler

A package for the @ogma packages to deal with adding color and string styling to terminal logs

Usage no npm install needed!

<script type="module">
  import ogmaStyler from 'https://cdn.skypack.dev/@ogma/styler';
</script>

README

@ogma/styler

String formatting, made easy.

Why Not Chalk?

Mostly this package was created for academic purposes and better understanding terminal SGRs, but I also like to know the code I'm using and how it works. Chalk is great, but the use of chaining or using the property as a mehtod s a bit strange to me. With @ogma/styler I was able to use getters for option chaining, a const enum for all the SGR values, and a single method for finalizing the application to the string that is being styled.

With all that said, if you like Chalk, use Chalk. It's a great trusted package.

Use

To use this package, simply install it

pnpm i @ogma/styler
yarn add @ogma/styler
npm i @ogma/styler

and import the style instance from the package

import { style } from '@ogma/styler';

And now you can chain options for your string, just make sure to apply to the string (or primitive) you want to style.

console.log(style.blue.yellowBg.underline.apply('Hello World!'));
// prints \x1B[34m\x1B[43m\x1B[4mHello World!\x1B[0m

blue-yellow-bg-underline

What styles are available?

Most of the values on the SGR list are available to use. underline, italic, bold, double-underline, blink, and color to name a few.

Turning Off Styling

Colors Only

If you'd like to turn off colors only you can do one of a few things.

  1. pass in a stream to style.child() that has a getColorDepth property that is a function that returns the value 1.
  2. Set the NO_COLOR or NODE_DISABLE_COLOR environment variables to any value. So long as process.env.NO_COLOR is truthy, colors will be disabled
  3. Set the FORCE_COLOR environment variable to 1.

All Styling

If you want no styling in your production environment you can set the NO_STYLE environment variable to anything that will result in a truthy check.