# compactjson

> JSON.stringify(data) with fewer mostly-blank lines.

Latest version **0.1.2** (published 2023-12-04) · ISC license · 0 weekly downloads

## Install

```sh
npm install compactjson
pnpm add compactjson
yarn add compactjson
bun add compactjson
```

Provides the command `compactjson`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.2 |
| Published | 2023-12-04 |
| First published | 2016-09-20 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 8.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | M.K. |
| Maintainers | mk-pmb |
| Keywords | compact, JSON |

## Links

- npm: https://www.npmjs.com/package/compactjson
- Repository: https://github.com/mk-pmb/compactjson-js
- Homepage: https://github.com/mk-pmb/compactjson-js#readme
- Issues: https://github.com/mk-pmb/compactjson-js/issues
- npm.io page: https://npm.io/package/compactjson

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 0.1.2 (latest) — 2023-12-04
- 0.1.1 — 2016-09-20

## README

<!--#echo json="package.json" key="name" underline="=" -->
compactjson
===========
<!--/#echo -->

<!--#echo json="package.json" key="description" -->
JSON.stringify(data) with fewer mostly-blank lines.
<!--/#echo -->

Mnemonic: [`compact-json`][compact-json] has the -dash- in its name
to remind you that it produces a -dash- bullet list, not JSON.


Usage
-----
from [usage.js](usage.js):

<!--#include file="usage.js" start="  //#u" stop="  //#r" code="javascript"
  outdent="  " -->
<!--#verbatim lncnt="11" -->
```javascript
var compactjson = require('compactjson'),
  data = { opts: compactjson.defaultOpts, '!': 1,
    tasks: [ 'wash cat', 'eat some vegetables', 'sort arrays (not)' ],
    dex: { kadabra: 64, abra: 63 },
    types: { num: -123.45, bool: false, Obj: {}, arr: [] },
    q1: [], q2: [], q3: [ true, true ], q4: [], q5: [],
    },
  jsonStr = compactjson(data, { width: 64 });
console.log(jsonStr);
```
<!--/include-->

Result:

<!--#include file="usage.js" start="  //#r" stop="  //#e" code="json"
  cut-head="//= `" cut-tail="`" -->
<!--#verbatim lncnt="11" -->
```json
{ "!": 1, "dex": { "abra": 63, "kadabra": 64 },
  "opts": { "breakAfterBroken": true,
    "breakAfterContainer": "unless-empty", "indent": 2,
    "maxItemsPerLine": 4, "serializer": null,
    "sortKeys": true, "width": 79 },
  "q1": [], "q2": [], "q3": [ true, true ],
  "q4": [], "q5": [],
  "tasks": [ "wash cat", "eat some vegetables", "sort arrays (not)" ],
  "types": { "Obj": {}, "arr": [], "bool": false, "num": -123.45 } }
```
<!--/include-->

CLI:

```bash
$ compactjson package.json | grep main
  "license": "ISC", "main": "cj.js", "name": "compactjson",
```


Options
-------
For defaults, see `"opts": { … }` above.
For edge cases, see [the tests](test/).

  * `indent`: A string, or the number of spaces, to be used for indentation.
  * `breakAfterBroken`: (bool) Whether to force a new line after any value
    whose JSON encoding contained a line break.
  * `breakAfterContainer`:
    * `false`: Data containers have no special effect on line wrap.
    * `true`: Force a new line after any container.
    * `'unless-empty'`: Empty containers have no special effect on line wrap,
      but force a new line after any that actually contain data.
  * `maxItemsPerLine`: Force a new line in front of the next value
    if the current line already contains this many values.
  * `serializer`: The 2nd argument for any call to native `JSON.stringify`.
  * `sortKeys`: (bool or func) Secret ninja option.
  * `width`: Try to keep lines at most this long.



Caveats
-------
  * Line width for wrapping measures items in JavaScript native string length
    (= UCS-2 characters) and thus produces unexpectedly short lines if there
    are lots of high Unicode characters in them.






<!--#toc stop="scan" -->


  [compact-json]: https://www.npmjs.com/package/compact-json


License
-------
<!--#echo json="package.json" key=".license" -->
ISC
<!--/#echo -->

---
_Source: https://npm.io/package/compactjson · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
