@cypress/eslint-plugin-json v3.2.3
@cypress/eslint-plugin-json
Lint and autofix your json with eslint
Features
- lint and auto-fix
jsonfiles (files ending with.jsonorrc) - auto-sort
package.jsonfiles (defaulttrue, can be disabled and sorting configured) - ignores
json-with-commentsfiles (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-devNext, install @cypress/eslint-plugin-json:
npm install @cypress/eslint-plugin-json --save-devUsage
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.eslintignorein 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
minimatchagainst 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
Credits
large amount of code borrowed from eslint-plugin-html