# eslint-plugin-json-format

> lint and auto-fix json

Latest version **2.0.1** (published 2019-09-03) · MIT license · 0 weekly downloads

## Install

```sh
npm install eslint-plugin-json-format
pnpm add eslint-plugin-json-format
yarn add eslint-plugin-json-format
bun add eslint-plugin-json-format
```

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.1 |
| Published | 2019-09-03 |
| First published | 2019-08-02 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.10.0 |
| Dependencies | 8 |
| Unpacked size | 22 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 43 |
| Author | bkucera |
| Maintainers | bkucera |
| Keywords | eslint, eslint-plugin, eslint-plugin-json, eslintplugin, json, json-format |

## Links

- npm: https://www.npmjs.com/package/eslint-plugin-json-format
- Repository: https://github.com/bkucera/eslint-plugin-json-format
- Homepage: https://github.com/bkucera/eslint-plugin-json-format#readme
- Issues: https://github.com/bkucera/eslint-plugin-json-format/issues
- npm.io page: https://npm.io/package/eslint-plugin-json-format

## Dependencies (8)

- [debug](https://npm.io/package/debug.md) ^4.1.1
- [lodash](https://npm.io/package/lodash.md) ^4.17.15
- [minimatch](https://npm.io/package/minimatch.md) ^3.0.4
- [json-fixer](https://npm.io/package/json-fixer.md) ^1.3.2
- [common-tags](https://npm.io/package/common-tags.md) ^1.8.0
- [line-column](https://npm.io/package/line-column.md) ^1.0.2
- [diff-match-patch](https://npm.io/package/diff-match-patch.md) ^1.0.4
- [sort-package-json](https://npm.io/package/sort-package-json.md) ^1.22.1

## 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

- 2.0.1 (latest) — 2019-09-03
- 2.0.0 — 2019-08-05
- 1.2.0 — 2019-08-04
- 1.1.0 — 2019-08-02

## README

<div align="center">
    <img width="150" height="150" src="docs/logo.svg">
    <h1>eslint-plugin-json-format</h1>
    <a href="https://circleci.com/gh/Bkucera/eslint-plugin-json-format"><img alt="CircleCI" src="https://img.shields.io/circleci/build/gh/Bkucera/eslint-plugin-json-format"></a>
    <a href="https://www.npmjs.com/package/eslint-plugin-json-format"><img src="https://img.shields.io/npm/v/eslint-plugin-json-format.svg?style=flat"></a>
    <a href="https://www.npmjs.com/package/eslint-plugin-json-format"><img src="https://img.shields.io/npm/dm/eslint-plugin-json-format.svg"></a>
    <a href="https://github.com/bkucera/eslint-plugin-json-format/blob/master/LICENSE"><img src="https://img.shields.io/github/license/bkucera/eslint-plugin-json-format.svg"></a>
    <p>An <a href="http://eslint.org">ESLint</a> plugin to lint, format, auto-fix, and sort your <code>json</code> files.</p>

</div>

## Features

- lint, format, and auto-fix `json` files (files ending with `.json` or `rc`)
- auto-sort `package.json` files (default `true`, can be disabled and sorting configured)
- ignores `json-with-comments` files (default `["**/.tsconfig.json", ".vscode/**"]`)
- ignores certain files by default (default `["**/package-lock.json"]`)

## Installation

You'll first need to install [ESLint](http://eslint.org):

```sh
npm install eslint --save-dev
```

Next, install `eslint-plugin-json-format`:

```sh
npm install eslint-plugin-json-format --save-dev
```

## Usage

Add `json-format` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin-` prefix:

```json
{
  "plugins": [
    "json-format"
  ]
}
```

**cli example**:
```sh
# lint entire poject for js and various json files
eslint --ext .js,.json,.eslintrc,.babelrc --fix .
```

> Note: **In order to lint hidden files** (e.g. `.eslintrc.json`), you'll need to modify/create a `.eslintignore` in your project root with these contents:
`.eslintignore`:
```gitignore
# eslint ignores hidden files by default
!.*
**/node_modules
```

## Settings

### default settings (`.eslintrc`):
```json
"settings": {
  "json/sort-package-json": "standard",
  "json/ignore-files": ["**/package-lock.json"],
  "json/json-with-comments-files": ["**/tsconfig.json", ".vscode/**"],
}
```
> Note: glob patterns use [`minimatch`](https://github.com/isaacs/minimatch/) against path names relative to the project root (cwd)

### `sort-package-json` order
You can configure the exact sort order of your `package.json` files (or turn it off entirely with `false`)

#### Available sorting options

**false**: disable `package.json` sorting.

**"standard"**: default from [`sort-package-json`](https://github.com/keithamus/sort-package-json). This is a sane, standard order.

**"pro"**: places scripts and dependencies at the top, reducing need to scroll down to view them. Pros only.

**["your", "custom", "order", "here"]**: provide an array to manually set the sort order.

### Settings examples

to turn off sorting `package.json` files for example, in your `.eslintrc`:
```json
{
  "plugins": [
    "json-format"
  ],
  "settings": {
    "json/sort-package-json": false,
  }
}
```

to format `tsconfig.json` (this will strip comments!), in your `.eslintrc`:
```json
{
  "plugins": [
    "json-format"
  ],
  "settings": {
    "json/json-with-comments-files": [],
  }
}
```

change the sort order of `package.json`:
```json
{
  "plugins": [
    "json-format"
  ],
  "settings": {
    "json/package-json-sort-order": ["license", "dependencies"],
  }
}
```

## Editor Configuration

**VSCode**:

In order for editor integration via the [`vscode-eslint`](https://github.com/microsoft/vscode-eslint) extension, you'll need to enable linting `json` files.

`settings.json`:
```json
// enable eslint fix-on-save
  "eslint.autoFixOnSave": true,
  "eslint.validate": [
    {
      "language": "json",
      "autoFix": true
    },
```

> to auto-format* `json-with-comments-files`, also add `"language": "jsonc"` (* will strip comments)

## License
[MIT](/LICENSE.md)

## Credits

large amount of code borrowed from [`eslint-plugin-html`](https://github.com/BenoitZugmeyer/eslint-plugin-html)

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