npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

color-terminal-fixed

v0.0.5

Published

Control your terminal colours (Fixed version of the original package).

Readme

Color Terminal

color-terminal-fixed is a small package that can be used with node.js to control terminal output. The package can move the cursor in the terminal and output colored text. It can colorize a message with a simple straightforward markup syntax.

NOTE

This is a fixed version of the original node-terminal package made by Mattijs Hoitink, which has been forked into color-terminal by Forgotten Labors Initiative

I've fixed the package for personal usage, I hope someone else finds it useful.

All credits goes to the original author of the package and the previous maintainers.

Installation and use

Install with npm to current directory:

  npm -d install color-terminal-fixed .

Or install globally:

  npm -d -g install color-terminal-fixed

Then require() package from your script:

  terminal = require('color-terminal-fixed')

Examples

Some examples from the examples directory.

Features

Colors

Control colored output. See also examples/colors.js. Colors may vary depending on the terminal settings.

Simple color changing:

  terminal.color('magenta').write('Unicorn');

This will output Unicorn in magenta (or purple). To change the background color to magenta:

  terminal.color('magenta', 'background').write('Unicorn');

Color formatting

color-terminal-fixed supports formatting strings with colors using a simple syntax. Outputting Unicorn in magenta (like the example above) would look like this:

  terminal.colorize('%mUnicorn');
  
  # And changing the background color to magenta
  terminal.colorize('%5Unicorn');

Using this syntax we can create Rainbows easily in one line:

  terminal.colorize('%rR%ma%ci%bn%yb%go%rw%n\n');
  
  # Or with background colors
  terminal.colorize('%w%1  R  %2  A  %3  I  %4  N  %5  B  %6  O  %7  W  %n ');

The colorize function accepts the following modifiers:

                  text      text            background
      ------------------------------------------------
      %k %K %0    black     dark grey       black
      %r %R %1    red       bold red        red
      %g %G %2    green     bold green      green
      %y %Y %3    yellow    bold yellow     yellow
      %b %B %4    blue      bold blue       blue
      %m %M %5    magenta   bold magenta    magenta
      %p %P       magenta (think: purple)
      %c %C %6    cyan      bold cyan       cyan
      %w %W %7    white     bold white      white

      %F     Blinking, Flashing
      %U     Underline
      %8     Reverse
      %_,%9  Bold

      %n,%N  Resets the color
      %%     A single %
      

Multiple effects also can be set by providing Object as parameter to color() method:

  terminal.color({"attribute": "bold", "foreground": "yellow"}).write('Yellow bold text')

Colored ouput can be reset with the reset() function:

  terminal.color('red').write('This is red,').reset().write(' and this is not')

Notice about color modifiers and colorize()

Remember, that multiple modifiers does not requires to reset formatting before EOL. Example:

  # 'Rainbow', thin colors.
  terminal.colorize('%rR%ma%ci%bn%yb%go%rw%n\n') # => 'Rainbow' in different colors
  
  # 'Rainbow', thin colors, bold modifier.
  terminal.colorize('$_%rR%ma%ci%bn%yb%go%rw%n\n') # => Bold 'Rainbow' in different colors
  
  # 'Rainbow', bold colors.
  terminal.colorize('%RR%Ma%Ci%Bn%Yb%Go%Rw%n\n') # => The same.

So, as you see, you don't need to output reset modifiers every time you colored text. Better practice will be use of reset() method called next to colorize():

  # Best practice
  terminal.colorize('%RR%Ma%Ci%Bn%Yb%Go%Rw').reset()

String#color()

You can use color formatting with String color() method. Example:

  # String#color() accepts three parameters: foreground(text) color, background color and style attribute.
  "string".color('white', 'red', 'blink') # => Blinking white string 'string' with red background
  
  # If you need just to set foreground color and style and not the background, pass null or empty string to param:
  "another string".color('blue', null, 'bold') # => Is equivalent to:
  "another string".color('blue', '', 'bold')

Cursor control

color-terminal-fixed provides methods for terminal cursor positioning. It can be usable in situations when you need strict text formatting. Example:

  # 'move()' function uses left top corner as (0,0) origin, so (5,7) coords means that resulting point
  # will be placed 5 symbols from the top corner and 7 symbols from the left corner.
  #
  # To reset terminal, you can use 'reset()' and 'clear()' methods.
  terminal.move(5, 7).color('red').write('*').reset().clear() 

color-terminal-fixed also contains shorthand methods for cursor positioning that help to avoid geometric mess with 'move()' method:

  # Places cursor 10 symbols up from the bottom corner.
  terminal.up(10).write('yay!')
  
  # Places cursor 2 symbols down from the current position.
  terminal.down(2).write('down')
  
  # Places cursor 4 symbols right from the current position.
  terminal.right(2).write('padding')
  
  # Places cursor 6 symbols left from the current position.
  terminal.left(6).write('left-left')

'Cleaners'

Useful methods to clear contents from terminal.

  # Clear all characters from the terminal
  terminal.clear()
  
  # Clear the line the cursor is at
  terminal.clearLine()
  
  # Clear the next `n` characters from the current cursor position. In current example method will clear six characters.
  terminal.clearCharacters(6) # => equals terminal.write(new Array(6 + 2).join(' ')).left(6 + 2)

Other methods

  # Write the `n` new lines.
  terminal.nl(2)  # => "\n\n"
  
  # Write the `n` tabulation characters.
  terminal.tab(4) # => "\t\t\t\t"

Credits

Original package by Mattijs Hoitink.

Previous maintainer:

This fork of the package is maintained by me

License

color-terminal-fixed is licensed under the MIT License.