chalk-stencil

1.0.0 • Public • Published

Chalk Stencil

Build Status Coverage Status Code Style

The tagged template literal for colorful command line outputs that you didn't know you needed!

asciicast

Note: The asciinema video still references the module by its original name chalk-template, sorry about that. Please don't let it confuses you, the module is called chalk-stencil 🙏

Install

$ npm install --save chalk-stencil
 
# or 
 
$ yarn add chalk-stencil

Usage

You can create a colorful template using all the Chalk's available styles:

const chalk = require('chalk-stencil')
const msg = chalk`This ${'text::red'} is going to be red,
  and this ${'one::yellow'} yellow`
 
console.log(msg({ text: 'text', one: 'other text' }))

Features

Multiple props

As seen above, you can create a template that accepts multiple properties, each one with its own style.

chalk`This ${'text::red'} is going to be red,
  and this ${'one::yellow'} yellow`

This will return a template function which will accept an object which properties will be used to fill the placeholders.

Style chaining

You can also chain multiple styles for each property:

chalk`Red, white background and bold ${'prop1::red.bgWhite.bold'},
  cyan underlined ${'prop2::cyan.underline'}`

Default style

You may want to give a default style to a whole template, well, you can by adding the ::<style> at the very end of the string:

const errorMsg = chalk`Error: The ${'errorOrigin::underline.cyan'}
  exploded with the power of a thousand rainbows!::red`
 
console.error(errorMsg({ errorOrigin: 'Spaceship' }))

Unstyled template

You can even use this as a simple templating system, without styles; just drop the ::<style> part:

const msg = chalk`Just a ${'prop1'} with ${'prop2'}`
console.log(msg({ prop1: 'simple template', prop2: 'no style' }))
// = Just a simple template with no style

Plain values

You can also use the special _ key, to pass in simple values, instead of objects:

const tpl = chalk`I just want this ${'_::magenta'} to be magenta`
 
tpl('thing')
// = I just want this thing to be magenta
//                    ^^^^^ magenta
tpl(42)
// I just want this 42 to be magenta
//                  ^^ magenta

Raw strings

You can use raw strings as well, it Just Works:

chalk`The following ${'text will be colored::magenta'}.`

Simple usage

The chalk-stencil tagged literal will always return a function, so that you can pass properties to it, but you can also use it as if it was a plain tag:

console.log(chalk`I'm going to ${'rock::green'} tonight.::bold`)
// = I'm going to rock tonight.
//                ^^^^ this one is green - everything else is just bold
// note how you don't have to "call" the function at the end
// i.e. no chalk`something`() to produce the actual string

Related

Chalk: chalk

License

MIT © Federico Giovagnoli

Package Sidebar

Install

npm i chalk-stencil

Weekly Downloads

1

Version

1.0.0

License

MIT

Last publish

Collaborators

  • meesayen