Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chalk/chalk-template
https://github.com/chalk/chalk-template
ansi-escape-codes chalk color command-line templating terminal
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/chalk/chalk-template
- Owner: chalk
- License: mit
- Created: 2021-04-22T08:26:05.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-06-21T00:23:15.000Z (over 1 year ago)
- Last Synced: 2024-04-23T17:24:13.953Z (5 months ago)
- Topics: ansi-escape-codes, chalk, color, command-line, templating, terminal
- Language: JavaScript
- Homepage:
- Size: 17.6 KB
- Stars: 90
- Watchers: 8
- Forks: 12
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
- License: license
- Security: .github/security.md
Awesome Lists containing this project
README
# chalk-template
> Terminal string styling with [tagged template literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#tagged_templates)
## Install
```sh
npm install chalk-template
```## Usage
For printing to standard output (stdout):
```js
import chalkTemplate from 'chalk-template';
import chalk from 'chalk';console.log(chalkTemplate`
CPU: {red ${cpu.totalPercent}%}
RAM: {green ${ram.used / ram.total * 100}%}
DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%}
`);console.log(chalk.red.bgBlack(chalkTemplate`2 + 3 = {bold ${2 + 3}}`));
const miles = 18;
const calculateFeet = miles => miles * 5280;console.log(chalkTemplate`
There are {bold 5280 feet} in a mile.
In {bold ${miles} miles}, there are {green.bold ${calculateFeet(miles)} feet}.
`);console.log(chalkTemplate`
There are also {#FF0000 shorthand hex styles} for
both the {#ABCDEF foreground}, {#:123456 background},
or {#ABCDEF:123456 both}.
`);
```For printing to standard error (stderr):
```js
import {chalkTemplateStderr} from 'chalk-template';console.error(chalkTemplateStderr`
CPU: {red ${cpu.totalPercent}%}
RAM: {green ${ram.used / ram.total * 100}%}
DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%}
`);
```## API
Blocks are delimited by an opening curly brace (`{`), a style, some content, and a closing curly brace (`}`).
Template styles are chained exactly like normal [Chalk](https://github.com/chalk/chalk) styles. The following two statements are equivalent:
```js
import chalk from 'chalk';
import chalkTemplate from 'chalk-template';console.log(chalk.bold.rgb(10, 100, 200)('Hello!'));
console.log(chalkTemplate`{bold.rgb(10,100,200) Hello!}`);
```Note that function styles (`rgb()`, etc.) may not contain spaces between parameters.
All interpolated values (`` chalkTemplate`${foo}` ``) are converted to strings via the `.toString()` method. All curly braces (`{` and `}`) in interpolated value strings are escaped.
## Template function
This function can be useful if you need to wrap the template function. However, prefer the default export whenever possible.
**Note:** It's up to you to properly escape the input.
```js
import {template} from 'chalk-template';console.log(template('Today is {red hot}'));
``````js
import {templateStderr} from 'chalk-template';console.error(templateStderr('Today is {red hot}'));
```## Create template functions using a custom Chalk instance
The `makeTemplate` and `makeTaggedTemplate` functions are exported so functions can be created using a custom Chalk instance.
**Note:** When using a function created with `makeTemplate`, it's up to you to properly escape the input.
```js
import {Chalk} from 'chalk'
import {makeTemplate, makeTaggedTemplate} from 'chalk-template';const template = makeTemplate(new Chalk({level: 3}));
const chalkTemplate = makeTaggedTemplate(new Chalk({level: 3}));console.log(template('Today is {red hot}'));
console.log(chalkTemplate`Today is {red hot}`);
```## Related
- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right
- [chalk-cli](https://github.com/chalk/chalk-cli) - Style text from the terminal## Maintainers
- [Sindre Sorhus](https://github.com/sindresorhus)
- [Josh Junon](https://github.com/qix-)