1. @cypress/eslint-plugin-json
lint and autofix json
@cypress/eslint-plugin-json
Package: @cypress/eslint-plugin-json
Created by: cypress-io
Last modified: Tue, 05 Apr 2022 02:27:22 GMT
Version: 3.2.3
License: MIT
Downloads: 1,657
Repository: https://github.com/cypress-io/eslint-plugin-json

Install

npm install @cypress/eslint-plugin-json
yarn add @cypress/eslint-plugin-json

@cypress/eslint-plugin-json

CircleCI

Lint and autofix your json with eslint

Features

  • lint 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:

 npm i eslint --save-dev

Next, install @cypress/eslint-plugin-json:

 npm install @cypress/eslint-plugin-json --save-dev

Usage

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

 {
  "plugins": [
    "@cypress/json"
  ]
}

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, .babelrc), you'll need to modify/create a .eslintignore in your project root with these contents:
.eslintignore:

# eslint ignores hidden files by default
!.*

Configuration

default configuration** (.eslintrc):

 "settings": {
  "json/sort-package-json": true,
  "json/ignore-files": ["**/package-lock.json"],
  "json/json-with-comments-files": ["**/tsconfig.json", ".vscode/**"],
  "json/package-json-sort-order": [
      "name",
      "version",
      "description",
      "private",
      "main",
      "browser",
      "scripts",
      "husky",
      "dependencies",
      "devDependencies",
      "peerDependencies",
      "files",
      "bin",
      "engines",
      "types",
      "typings",
      "productName",
      "license",
      "repository",
      "homepage",
      "author",
      "bugs",
    ]
}

Note: glob patterns use minimatch against pathnames relative to the project root (cwd)

examples:

to turn off sort-package-json for example, in your .eslintrc:

 {
  "plugins": [
    "@cypress/json"
  ],
  "settings": {
    "json/sort-package-json": false,
  }
}

to format tsconfig.json (this will strip comments!), in your .eslintrc:

 {
  "plugins": [
    "@cypress/json"
  ],
  "settings": {
    "json/json-with-comments-files": [],
  }
}

change the sort order of package.json:

 {
  "plugins": [
    "@cypress/json"
  ],
  "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-format json-with-comments-files, also add "language": "jsonc"

License

MIT

Credits

large amount of code borrowed from eslint-plugin-html

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code