Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/timvandam/nice-table
A non-overflowing `console.table` alternative with customization options.
https://github.com/timvandam/nice-table
Last synced: about 1 month ago
JSON representation
A non-overflowing `console.table` alternative with customization options.
- Host: GitHub
- URL: https://github.com/timvandam/nice-table
- Owner: timvandam
- License: mit
- Created: 2022-07-16T12:37:49.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-07-17T19:58:01.000Z (over 2 years ago)
- Last Synced: 2024-09-18T13:21:08.611Z (about 2 months ago)
- Language: TypeScript
- Homepage:
- Size: 9.77 KB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# nice-table
A non-overflowing `console.table` alternative with customization options.## Usage
```ts
import { createTable } from 'nice-table';type Person = {
name: string;
age: number;
};const myData: Person[] = [
{ name: 'John', age: 30 },
{ name: 'Jane', age: 25 },
{ name: 'Joe', age: 20 },
{
name: 'Pablo Diego José Francisco de Paula Juan Nepomuceno María de los Remedios Cipriano de la Santísima Trinidad Ruiz y Picasso',
age: new Date(Date.now() - Date.UTC(1881, 3, 8)).getUTCFullYear() - 1970,
},
];console.log(
createTable(myData, ['name', 'age'], {
maxWidth: 60,
columnSizing: 'stretch',
horizontalAlignment: 'middle',
verticalAlignment: 'middle',
fullWidth: true,
indexColumn: false,
throwIfTooSmall: false,
}),
);// Output:
// ┌────────────────────────────────────────────────────┬─────┐
// │ name │ age │
// ├────────────────────────────────────────────────────┼─────┤
// │ John │ 30 │
// │ Jane │ 25 │
// │ Joe │ 20 │
// │ Pablo Diego José Francisco de Paula Juan │ │
// │ Nepomuceno María de los Remedios Cipriano de la │ 141 │
// │ Santísima Trinidad Ruiz y Picasso │ │
// └────────────────────────────────────────────────────┴─────┘
```### Colored Output
```ts
import * as util from 'node:util';// ...
console.log(
createTable(myData, ['name', 'age'], {
stringify: (value: unknown) => util.inspect(value, { colors: true }),
}),
);
```## Options
### `maxWidth`
The maximum width of the table.
This width will never be exceeded by the table.
Can be set to `process.stdout.columns` to use the terminal width in Node.js.Defaults to `80`.
### `columnSizing`
The strategy used to determine the width of each column.
There are two possible values:
- `'stretch'`: The size of each column is proportional to the length of its content. All columns larger than `maxWidth / columnCount` are shrunk by the same ratio in case the table is too large for the configured `maxWidth`.
- `'even'`: All columns will have the same size.Defaults to `'stretch'`.
### `horizontalAlignment`
The horizontal alignment the text in all table cells. Possible values are `'left'`, `'middle'`, `'right'`.Defaults to `'middle'`.
### `verticalAlignment`
The vertical alignment the text in all table cells. Possible values are `'top'`, `'middle'`, `'bottom'`.Defaults to `'middle'`.
### `fullWidth`
Whether to stretch the table to the `maxWidth`.Defaults to `false`.
### `throwIfTooSmall`
Whether to throw an error if the `maxWidth` is too small to fit the content.
`maxWidth` should be at least `4 * columnCount + 1` to fit a table with `columnCount` columns.If set to `false` will return a message indicating that there is not enough space to fit the table.
Defaults to `true`.
### `indexColumn`
Whether to include an index column.Defaults to `false`.
### `stringify`
A function converts values into strings before they are is displayed.
ANSI codes are supported, so colored input can be achieved as shown in [Colored Output](#colored-output).Defaults to `String`.