Comparing version 1.3.2 to 1.3.3
# Change log | ||
## 1.3.3 (2022-01-24) | ||
- added UK spelling alias `grey` for `gray` | ||
- update dev dependencies | ||
- update readme | ||
## 1.3.2 (2021-12-30) | ||
@@ -4,0 +9,0 @@ - added bundle generation for ESM |
{ | ||
"name": "ansis", | ||
"version": "1.3.2", | ||
"description": "Color styling of text for ANSI terminals using the SGR codes defined in the ECMA-48 standard.", | ||
"version": "1.3.3", | ||
"description": "Color styling of text for ANSI terminals.", | ||
"keywords": [ | ||
"ansi", | ||
"style", | ||
"color", | ||
"style", | ||
"cli", | ||
@@ -16,5 +16,4 @@ "console", | ||
"hex", | ||
"log", | ||
"logging", | ||
"bgGreen", | ||
"truecolor", | ||
"bgRed", | ||
"NO_COLOR" | ||
@@ -69,9 +68,9 @@ ], | ||
"devDependencies": { | ||
"@babel/core": "^7.16.5", | ||
"@babel/preset-env": "^7.16.5", | ||
"@types/jest": "^27.0.3", | ||
"jest": "^27.4.5", | ||
"@babel/core": "^7.16.12", | ||
"@babel/preset-env": "^7.16.11", | ||
"@types/jest": "^27.4.0", | ||
"jest": "^27.4.7", | ||
"prettier": "^2.5.1", | ||
"rollup": "^2.62.0" | ||
"rollup": "^2.66.0" | ||
} | ||
} |
189
README.md
@@ -13,5 +13,6 @@ <h1 align="center"> | ||
Color styling of text for ANSI terminals using the SGR (Select Graphic Rendition) codes defined in the [ECMA-48](https://www.ecma-international.org/publications-and-standards/standards/ecma-48/) standard.\ | ||
This is improved and faster implementation for `Node.js`. | ||
This is a Node.js library for coloring output in ANSI terminals.\ | ||
The ansis use the SGR (Select Graphic Rendition) codes defined in the [ECMA-48](https://www.ecma-international.org/publications-and-standards/standards/ecma-48/) standard. | ||
<div align="center"> | ||
@@ -27,6 +28,6 @@ <a href="https://www.npmjs.com/package/ansis"> | ||
```bash | ||
npm install ansis --save | ||
npm install ansis | ||
``` | ||
## Quick start | ||
## Quick Start | ||
@@ -39,68 +40,32 @@ ```js | ||
console.log(ansis.green(`Hello ${ansis.inverse('ANSI')} World!`)); | ||
console.log(ansis.black.bgYellow(`Warning: `) + ansis.cyan(' /path/to/file.js ') + ansis.red(`not found!`) ); | ||
console.log(ansis.black.bgYellow(`Warning:`) + ansis.cyan(' /path/to/file.js ') + ansis.red(`not found!`) ); | ||
``` | ||
Output: | ||
Output:\ | ||
![output](doc/img/quik-start-output.png?raw=true "output") | ||
## Show ANSI demo | ||
```bash | ||
git clone https://github.com/webdiscus/ansis.git | ||
cd ./ansis | ||
npm i | ||
npm run demo | ||
``` | ||
## Features | ||
- supports `ES Modules` and `CommonJS` | ||
- supports both `ESM` and `CommonJS` | ||
- standard API compatible with many popular ANSI libraries | ||
- chained syntax | ||
- nested syntax | ||
- ANSI 256 colors and Truecolor | ||
- detects color support | ||
- supports the environment variables [`NO_COLOR`](https://no-color.org) `FORCE_COLOR` and flags `--no-color` `--color` | ||
- low level access to the `open` and `close` properties for each style | ||
- correct break of style at `end of line` | ||
- faster than many others, [see benchmarks](#benchmark) | ||
- no dependencies | ||
- powerful and lightweight library is faster than many others such as `chalk` `kleur` `ansi-colors` etc. | ||
- supports the standard de facto API of the `chalk` | ||
- supports the environment variables [`NO_COLOR`](https://no-color.org) `FORCE_COLOR` and flags `--no-color` `--color` | ||
- supports ANSI 256 colors and Truecolor | ||
- supports styles like: `bold` `red` `yellowBright` `bgGreen` `bgCyanBright` ect. | ||
- supports chained styles, e.g.: | ||
```js | ||
ansis.red.bold.italic.underline('text'); | ||
``` | ||
- supports nested styles like `colorette` `picocolors`, e.g.: | ||
```js | ||
const c = ansis; | ||
c.red(`red ${c.italic.green('italic green')} red`); | ||
c.red(`${c.bold(`${c.italic(`${c.underline('underline')}italic`)}bold`)}red`); | ||
``` | ||
- supports methods for custom colors `rgb()` `hex()` `bgRgb()` `bgHex()` `ansi256()` `bgAnsi256()`: | ||
```js | ||
ansis.rgb(255, 80, 200)('text'); | ||
ansis.hex('#FF88AA')('text'); | ||
ansis.bgHex('#F8A')('text'); | ||
ansis.ansi256(110)('text'); | ||
``` | ||
- supports shortcut, e.g.: | ||
```js | ||
const theme = { | ||
error: ansis.red.bold, | ||
info: ansis.cyan.italic, | ||
warning: ansis.black.bgYellowBright, | ||
ruby: ansis.hex('#E0115F'), | ||
bgAmber: ansis.bgHex('#FFBF00'), | ||
}; | ||
- `String.prototype` stays virgin | ||
theme.error('error'); | ||
theme.info('info'); | ||
theme.warning('warning'); | ||
theme.ruby('Ruby color'); | ||
theme.bgAmber('Amber background color'); | ||
``` | ||
- supports the use of `open` and `close` properties for each style, e.g.: | ||
```js | ||
const myStyle = ansis.bold.italic.black.bgHex('#ABCDEF'); | ||
console.log(`Hello ${ansis.green.open}ANSI${ansis.green.close} World!`); | ||
console.log(`Hello ${myStyle.open}ANSI${myStyle.close} World!`); | ||
``` | ||
- supports correct break of style at `end of line`, e.g.: | ||
```js | ||
ansis.bgGreen(`\nAnsis\nNew Line\nNext New Line\n`); | ||
``` | ||
## Chained syntax | ||
```js | ||
ansis.underline.italic.bold.red('Styled text'); | ||
``` | ||
## Nested syntax | ||
```js | ||
const c = ansis; | ||
c.red(`${c.bold(`${c.italic(`${c.underline('underline')}italic`)}bold`)}red`); | ||
``` | ||
## Styles | ||
@@ -131,3 +96,3 @@ | ||
`white` | ||
`gray` | ||
`gray` (alias `grey`) | ||
`blackBright` | ||
@@ -163,4 +128,7 @@ `redBright` | ||
The pre-defined set of 256 colors: | ||
Foreground: `.ansi256(code)` has aliases `.ansi(code)` and `.fg(code)`\ | ||
Background: `.bgAnsi256(code)` has aliases `.bgAnsi(code)` and `.bg(code)` | ||
The pre-defined set of 256 colors. | ||
| Code range | Description | | ||
@@ -172,9 +140,5 @@ |-----------:|-------------------------------------------| | ||
| 232 - 255 | grayscale from black to white in 24 steps | | ||
| | ||
See [ANSI color codes](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit). | ||
**Foreground method:** `.ansi256(code)` has aliases `.ansi(code)` and `.fg(code)`.\ | ||
**Background method:** `.bgAnsi256(code)` has aliases `.bgAnsi(code)` and `.bg(code)`. | ||
```js | ||
@@ -194,2 +158,5 @@ // foreground color | ||
Foreground: `hex` `rgb`\ | ||
Background: `bgHex` `bgRgb` | ||
```js | ||
@@ -207,15 +174,44 @@ // foreground color | ||
## Shortcuts | ||
```js | ||
const theme = { | ||
error: ansis.red.bold, | ||
info: ansis.cyan.italic, | ||
warning: ansis.black.bgYellowBright, | ||
ruby: ansis.hex('#E0115F'), | ||
}; | ||
theme.error('error'); | ||
theme.info('info'); | ||
theme.warning('warning'); | ||
theme.ruby('Ruby color'); | ||
``` | ||
## Low level usage | ||
You can use the `open` and `close` properties for each style. | ||
```js | ||
const myStyle = ansis.bold.italic.black.bgHex('#ABCDEF'); | ||
console.log(`Hello ${myStyle.open}ANSI${myStyle.close} World!`); | ||
``` | ||
## Correct break of style at `end of line` | ||
```js | ||
ansis.bgGreen(`\nAnsis\nNew Line\nNext New Line\n`); | ||
``` | ||
![output](doc/img/break-style-nl.png?raw=true "break styles at EOL") | ||
<a id="compare" href="#compare"></a> | ||
## Compare most popular ANSI libraries | ||
| Library | Standard<br>style / color<br>naming | Chain<br>styles | Nested<br>styles | New<br>Line | ANSI 256<br>colors | Truecolor<br>RGB / HEX | NO_COLOR | | ||
|------------------------------|:-----------------------------------:|:---------------:|:----------------:|:-----------:|---------------------------------|------------------------|:------------------------------------------------------------| | ||
| [`colors.js`][colors.js] | no, e.g.<br>`brightRed` | yes | yes | yes | - | - | only<br>`FORCE_COLOR`<br>`--no-color`<br>`--color` | | ||
| [`colorette`][colorette] | yes<br>(16 colors) | - | yes | - | - | - | yes | | ||
| [`picocolors`][picocolors] | yes<br>(8 colors) | - | yes | - | - | - | yes | | ||
| [`cli-color`][cli-color] | yes<br>(16 colors) | yes | yes | - | `.xterm(num)` | - | yes | | ||
| [`color-cli`][color-cli] | no, e.g.<br>`red_bbt` | yes | _buggy_ | yes | `.x<num>` | - | only<br>`--no-color`<br>`--color` | | ||
| [`ansi-colors`][ansi-colors] | yes<br>(16 colors) | yes | yes | yes | - | - | only<br>`FORCE_COLOR` | | ||
| [`kleur`][kleur] | yes<br>(8 colors) | _yes_* | yes | - | - | - | yes | | ||
| [`chalk`][chalk] | yes<br>(16 colors) | yes | yes | yes | `.ansi256(num)` | `.hex()` `.rgb()` | yes | | ||
| [`ansis`][ansis-github] | yes<br>(16 colors) | yes | yes | yes | `.ansi256(num)`<br>`.ansi(num)` | `.hex()` `.rgb()` | yes | | ||
| Library | Standard<br>style / color<br>naming | Chain<br>styles | Nested<br>styles | New<br>Line | ANSI 256<br>color<br>methods | Truecolor<br>RGB / HEX<br>methods | Supports<br>NO_COLOR | | ||
|------------------------------|:-----------------------------------:|:---------------:|:----------------:|:-----------:|----------------------------------------------|-----------------------------------|:---------------------------------------------------| | ||
| [`colors.js`][colors.js] | no, e.g.<br>`brightRed`<br>(16 colors) | yes | yes | yes | - | - | only<br>`FORCE_COLOR`<br>`--no-color`<br>`--color` | | ||
| [`colorette`][colorette] | yes<br>(16 colors) | - | yes | - | - | - | yes | | ||
| [`picocolors`][picocolors] | yes<br>(8 colors) | - | yes | - | - | - | yes | | ||
| [`cli-color`][cli-color] | yes<br>(16 colors) | yes | yes | - | `.xterm(num)` | - | yes | | ||
| [`color-cli`][color-cli] | no, e.g.<br>`red_bbt`<br>(16 colors) | yes | _buggy_ | yes | `.x<num>` | - | only<br>`--no-color`<br>`--color` | | ||
| [`ansi-colors`][ansi-colors] | yes<br>(16 colors) | yes | yes | yes | - | - | only<br>`FORCE_COLOR` | | ||
| [`kleur`][kleur] | yes<br>(8 colors) | _yes_* | yes | - | - | - | yes | | ||
| [`chalk`][chalk] | yes<br>(16 colors) | yes | yes | yes | `.ansi256(num)` | `.hex()` `.rgb()` | yes | | ||
| [`ansis`][ansis-github] | yes<br>(16 colors) | yes | yes | yes | `.ansi256(num)`<br>`.ansi(num)`<br>.`fg(num)` | `.hex()` `.rgb()` | yes | | ||
@@ -226,9 +222,20 @@ ### Column description | ||
`kleur` use the chain of functions: `kleur.red().bold().underline('text')`. | ||
- **Nested styles**: | ||
- **Nested styles**: correct closing of nested escape sequences. | ||
```js | ||
c.red(`red ${c.green(`green ${c.underline(`underline`)} green`)} red`) | ||
- **New Line**: correct break of escape sequences at `end of line`\ | ||
![output](doc/img/break-style-nl.png?raw=true "break styles at EOL") | ||
- **New Line**: correct break of escape sequences at `end of line`. | ||
```js | ||
ansis.bgGreen(`\nAnsis\nNew Line\nNext New Line\n`); | ||
``` | ||
- **NO_COLOR**: supports the environment variables [`NO_COLOR`](https://no-color.org) `FORCE_COLOR` and flags `--no-color` `--color` | ||
## Show ANSI demo | ||
```bash | ||
git clone https://github.com/webdiscus/ansis.git | ||
cd ./ansis | ||
npm i | ||
npm run demo | ||
``` | ||
<a id="benchmark" href="#benchmark"></a> | ||
## Benchmark | ||
@@ -403,10 +410,10 @@ | ||
Most popular ANSI libraries for `Node.js`: | ||
- [`colors.js`][colors.js] | ||
- [`colorette`][colorette] | ||
- [`picocolors`][picocolors] | ||
- [`cli-color`][cli-color] | ||
- [`color-cli`][color-cli] | ||
- [`ansi-colors`][ansi-colors] | ||
- [`kleur`][kleur] | ||
- [`chalk`][chalk] | ||
- [colors.js][colors.js] | ||
- [colorette][colorette] | ||
- [picocolors][picocolors] | ||
- [cli-color][cli-color] | ||
- [color-cli][color-cli] | ||
- [ansi-colors][ansi-colors] | ||
- [kleur][kleur] | ||
- [chalk][chalk] | ||
@@ -413,0 +420,0 @@ ## License |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
423
0
45746
894