Rules for valid, consistent, and readable package.json files
You'll first need to install ESLint >=8 and eslint-plugin-package-json:
$ npm install eslint eslint-plugin-package-json --save-devNote: If you installed ESLint globally (using the -g flag) then you must also install eslint-plugin-package-json globally.
Add an override to your ESLint configuration file that specifies this plugin, jsonc-eslint-parser and its recommended rules for your package.json file:
module.exports = {
overrides: [
{
extends: ['plugin:package-json/recommended'],
files: ['package.json'],
parser: 'jsonc-eslint-parser'
plugins: ['package-json']
}
]
};Or, individually configure the rules you want to use under the rules section.
module.exports = {
overrides: [
{
files: ['package.json'],
parser: 'jsonc-eslint-parser'
plugins: ['package-json'],
rules: {
'package-json/valid-package-def': 'error'
}
}
]
};package-json/order-properties: Require top-level properties to be in a conventional order ("name"first, etc.).package-json/sort-collections: Keep sub-collections like"dependencies"and"scripts"in alphabetical order.package-json/valid-package-def: Validatepackage.jsonfiles against the NPM specification.package-json/valid-local-dependency: Validates the casing forfile:andlink:dependencies in thepackage.jsonfiles.
These rules only run on package.json files; they will ignore all other files being linted. They lint package.json files at project root, and in any subfolder of the project, making this plugin great for monorepos.
Many thanks to @zetlen for creating the initial version and core infrastructure of this package! 💖