<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>
Features
- lint, format, and auto-fix
json
files (files ending with.json
orrc
) - auto-sort
package.json
files (defaulttrue
, 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:npm install eslint --save-dev
Next, install
eslint-plugin-json-format
:npm install eslint-plugin-json-format --save-dev
Usage
Addjson-format
to the plugins section of your .eslintrc
configuration file. You can omit the eslint-plugin-
prefix:{
"plugins": [
"json-format"
]
}
cli example:
# 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
:
# eslint ignores hidden files by default
!.*
**/node_modules
Settings
default settings (.eslintrc
):
"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
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: disablepackage.json
sorting."standard": default from
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 sortingpackage.json
files for example, in your .eslintrc
:
{
"plugins": [
"json-format"
],
"settings": {
"json/sort-package-json": false,
}
}
to format
tsconfig.json
(this will strip comments!), in your .eslintrc
:
{
"plugins": [
"json-format"
],
"settings": {
"json/json-with-comments-files": [],
}
}
change the sort order of
package.json
:
{
"plugins": [
"json-format"
],
"settings": {
"json/package-json-sort-order": ["license", "dependencies"],
}
}
Editor Configuration
VSCode:In order for editor integration via the
vscode-eslint
extension, you'll need to enable linting json
files.settings.json
:
// enable eslint fix-on-save
"eslint.autoFixOnSave": true,
"eslint.validate": [
{
"language": "json",
"autoFix": true
},
to auto-formatjson-with-comments-files
, also add"language": "jsonc"
( will strip comments)
License
MITCredits
large amount of code borrowed fromeslint-plugin-html