pretty-var-export
Version:
Export any value to valid and equivalent JavaScript code
199 lines (140 loc) • 4.35 kB
Markdown
[](https://travis-ci.org/kensnyder/pretty-var-export)
[](https://codecov.io/gh/kensnyder/pretty-var-export)
[](https://opensource.org/licenses/MIT)
Export any value to valid and equivalent JavaScript code. Uses syntax coloring
for debugging from the cli.
```bash
npm install pretty-var-export
```
```ts
import pretty from 'pretty-var-export';
// return string suitable for logging
console.log(pretty(myValue));
// OR prettify and log
pretty.log(myValue1, myValue2);
```
_Note that coloring can be disabled with `pretty.colors.disable()`._

- [Add handler](
- [Remove handler](
- [Custom indent](
- [Custom colors](
- [Custom display options](
- [Custom labels](
Add custom handlers for formatting.
For example, to show NaN as a different color than numbers:
```ts
import pretty from 'pretty-var-export';
// each handler must have a test and format method
pretty.handlers.add('nan', {
test: isNaN,
format: () => pretty.colors.palette.cyan('NaN'),
});
// if you want to reset to default list
pretty.handlers.reset();
```
You can remove handlers by name.
```ts
import pretty from 'pretty-var-export';
// see below for list of names
pretty.handlers.remove('nan');
// or you can reset all handlers
pretty.handlers.reset();
```
Default handler names:
- arguments
- Array
- BigInt
- Boolean
- Date
- Error
- Entries
- Function
- Map
- null
- Number
- Object
- Promise
- RegExp
- Set
- String
- Symbol
- TypedArray
- undefined
- URL
- URLSearchParams
- WeakMap
- WeakSet
By default, indentation is 2 spaces.
```ts
import pretty from 'pretty-var-export';
pretty.options.indent = 4; // 4 spaces
pretty.options.indent = ' '; // 4 spaces
pretty.options.indent = '\t'; // tab
```
Colors come from the [ansi-colors](https://npmjs.com/package/ansi-colors) npm module.
Formats include the following:
- `boolean` for true and false (default yellow)
- `comment` for comments (default gray)
- `constructor` for instantiation (default blue)
- `escape` for string escapes (default yellowBright)
- `null` for null (default yellow)
- `number` for numbers, NaN, Infinity (default red)
- `property` for object property names (default cyan)
- `regexp` for bodies of regular expressions (default blue)
- `string` for strings (default green)
- `symbol` for quotes, braces, parens, commas, colons (default white)
- `undefined` for undefined (default yellow)
```ts
import pretty from 'pretty-var-export';
// existing color functions from the ansi-colors npm package
pretty.colors.symbol = pretty.colors.palette.blueBright;
// use any other function
pretty.colors.string = chalk.green;
// disable all coloring
pretty.colors.disable();
// reset to default colors and re-enable coloring
pretty.colors.reset();
```
There are a few options that can change display. Below are defaults.
```ts
import pretty from 'pretty-var-export';
// if true, show function bodies
pretty.options.showFunctionBody = false;
// the max length for strings
pretty.options.maxStringLength = 1024 * 4;
// max number of items to list
pretty.options.maxListItems = 100;
// output multi-line strings with backticks
pretty.options.preferBackticks = true;
// quote style for default strings (single, double or backtick)
pretty.options.quoteStyle = 'double';
// reset to defaults
pretty.options.reset();
```
Labels can be changed or translated.
```ts
import pretty from 'pretty-var-export';
// defaults
pretty.labels.circularReference = 'Circular Reference';
pretty.labels.codeOmitted = 'Code Omitted';
pretty.labels.itemsUnknown = 'Items Unknown';
// reset to defaults
pretty.labels.reset();
```
See [CHANGELOG.md](./CHANGELOG.md)
Please open a ticket or PR on GitHub.
[](./LICENSE)