Multi-colour console output from chalk with added awesome

Usage no npm install needed!

<script type="module">
  import tfunk from '';


tfunk Build Status

Multi-colour console output from Chalk with added awesome.

by @shakyshane & @AydinHassan



npm install tfunk


Syntax rules:

{ <color> : YOUR STRING }


{blue:This is a blue line}

} is optional

{blue:This is a blue line <- Perfectly valid


var tFunk = require("tfunk");

console.log( tfunk("{cyan:tFunk terminal colours") )

// => tFunk terminal colours

Or get a custom compiler with a set prefix:

var compiler = require("tfunk").Compiler({
    prefix: "[{magenta:tFunk}]"

console.log( compiler.compile("tFunk is awesome") );
console.log( compiler.compile("don't you think?") );

// => [tFunk] tFunk is awesome
// => [tFunk] don't you think?

Define your own syntax

You can define your own methods, they receive the string section as the first parameter & have access to the compiler through this.compile() keyword.

var compiler = require("tfunk").Compiler({
    "warn": function(string) {
        return this.compile("{red:WARNING:" + string);

Now you can use warn anywhere you like.

console.log( compiler.compile("{warn: Could not file your config file...") );

// => WARNING: Could not file your config file...


Here are some comparisons to chalk, to help you understand how to use tFunk.

Single Colours

// chalk
console.log("This has a single colour") );

// tFunk
console.log( tFunk("{red:This has a single colour") );

Single Colour mid string

// chalk
console.log( "This has a single colour " + chalk.cyan("that begins mid-string") );

// tFunck
console.log( tFunk("This has a single colour {cyan:that begins mid-string") );

Single Colour with end point

// chalk
console.log("This has a single colour with ") + "an endpoint");

// tFunk
console.log( tFunk("{red:This has a single colour with }an endpoint") );

Two Colours

// chalk
console.log("This has ") + chalk.cyan("two colours") );

// tFunk
console.log( tFunk("{green:This has {cyan:two colours") );

Nested Colours

// chalk
console.log("This has a colour " + chalk.cyan("nested inside") + " another colour") );

console.log( tFunk("{green:This has a colour {cyan:nested inside} another colour") );

Multiple Nested

// chalk
console.log("Multiple " + chalk.cyan("NESTED") + " styles in " +"the same string") + " with an ending") );

// tFunk
console.log( tFunk("{blue:Multiple {cyan:NESTED} styles in {red:the same string} with an ending") );

Multi line

var multiline = require("multiline");

var string = multiline(function () {/*
{cyan:This is a multi-line coloured string
With a single {yellow:yellow} word in the center of a line
Pretty cool huh?

console.log( tFunk(string) );

Escaping when you need curly braces

console.log( tFunk("This has a \\{\\{mustache\\}\\}") );


  • Colours
  • Nested Colours
  • Custom syntax
  • Prefixed compiler
  • Make the chain-able API work like this "{white.bgRed: White text, red BG"
  • Offer a way of escaping. Right now, ALL instances of } will be lost