{"_id":"eslint-package-json","_rev":"5-176da19c088e16c7df8a83c99c7cf84a","name":"eslint-package-json","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.2":{"name":"eslint-package-json","version":"0.0.2","keywords":["eslint","eslintplugin","eslint-plugin","package.json","package-json","npm","manifest","linter","lint","json"],"author":{"url":"https://sindresorhus.com","name":"Sindre Sorhus","email":"sindresorhus@gmail.com"},"license":"MIT","_id":"eslint-package-json@0.0.2","maintainers":[{"name":"sindresorhus","email":"sindresorhus@gmail.com"}],"homepage":"https://github.com/sindresorhus/eslint-package-json#readme","bugs":{"url":"https://github.com/sindresorhus/eslint-package-json/issues"},"dist":{"shasum":"54a87148385517dc4a4ef906fcbb15bf357ca0aa","tarball":"https://registry.npmjs.org/eslint-package-json/-/eslint-package-json-0.0.2.tgz","fileCount":82,"integrity":"sha512-GOK6qmr15dM4/v/XM8v2T2cg1fmfmrTWN2OCHma3/MdjlrFzli3Kt+OH7OwoWmERUXPDGc8r4N9/hXkqQS0YuA==","signatures":[{"sig":"MEUCIQC8mH6/RRJxG64TcFLxd3mA2nTJHqNJqZi98/vJN6qB6QIgdnuIYHolJpY4brOxtB6RrtaHXPVQ04c2iJQ6A5ZReB4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190557},"type":"module","types":"./index.d.ts","engines":{"node":">=22"},"exports":{"types":"./index.d.ts","default":"./index.js"},"funding":"https://github.com/sindresorhus/eslint-package-json?sponsor=1","gitHead":"47d2594348216962a785a69a863ffa7323312bc9","scripts":{"fix":"run-p --continue-on-error \"fix:*\"","lint":"run-p --continue-on-error \"lint:*\"","test":"npm-run-all --node-run --continue-on-error lint \"test:*\"","fix:js":"npm run lint:js -- --fix","lint:js":"eslint","test:js":"node --test --experimental-test-snapshots test/*.js","coverage":"node --test --experimental-test-snapshots --experimental-test-coverage test/*.js","create-rule":"node ./scripts/create-rule.js && npm run create-rules-index-file && npm run fix:eslint-docs","fix:markdown":"npm run lint:markdown -- --fix","fix:snapshots":"node --test --experimental-test-snapshots --test-update-snapshots test/*.js","lint:markdown":"markdownlint \"**/*.md\"","fix:eslint-docs":"eslint-doc-generator","lint:eslint-docs":"npm run fix:eslint-docs -- --check","run-rules-on-codebase":"eslint --config=./eslint.dogfooding.config.js","create-rules-index-file":"node ./scripts/create-rules-index-file.js"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"repository":{"url":"git+https://github.com/sindresorhus/eslint-package-json.git","type":"git"},"_npmVersion":"11.18.0","description":"Powerful ESLint rules for package.json","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"semver":"^7.8.5","@eslint/json":"^2.0.1","detect-indent":"^7.0.2","hosted-git-info":"^10.1.1","spdx-expression-parse":"^4.0.0","validate-npm-package-name":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","eslint":"^10.6.0","globals":"^17.7.0","outdent":"^0.8.0","enquirer":"^2.4.1","nano-spawn":"^2.1.0","open-editor":"^6.0.0","npm-run-all2":"^9.0.2","node-style-text":"^2.1.2","eslint-config-xo":"^0.57.0","markdownlint-cli":"^0.49.0","@babel/code-frame":"^8.0.0","eslint-plugin-jsdoc":"^63.0.12","eslint-doc-generator":"^3.6.0","eslint-plugin-eslint-plugin":"^7.4.1"},"peerDependencies":{"eslint":">=10.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-package-json_0.0.2_1783506872714_0.3252375183288003","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"eslint-package-json","version":"0.1.0","keywords":["eslint","eslintplugin","eslint-plugin","package.json","package-json","npm","manifest","linter","lint","json"],"author":{"url":"https://sindresorhus.com","name":"Sindre Sorhus","email":"sindresorhus@gmail.com"},"license":"MIT","_id":"eslint-package-json@0.1.0","maintainers":[{"name":"sindresorhus","email":"sindresorhus@gmail.com"}],"homepage":"https://github.com/sindresorhus/eslint-package-json#readme","bugs":{"url":"https://github.com/sindresorhus/eslint-package-json/issues"},"dist":{"shasum":"5d4ed484ee53ad5fda561f2aadfd255da9272a24","tarball":"https://registry.npmjs.org/eslint-package-json/-/eslint-package-json-0.1.0.tgz","fileCount":85,"integrity":"sha512-9AIPDnuBSVJu+pB/JaA+TgsjtlkEfu947bx1KyWXVlIoD5IR/h5Gym8MPMLnhQKpIU4n+oUU9s+/N3NYn64w2A==","signatures":[{"sig":"MEQCIDiOjGMlqC3b/Y0ICDkznaH3x0ERtp3nhtxUQQNQSqgVAiBdwXjvzo9GAdQkEUPbmcKBk12fEs3aBT7dEopttvEOBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179501},"type":"module","types":"./index.d.ts","engines":{"node":">=22"},"exports":{"types":"./index.d.ts","default":"./index.js"},"funding":"https://github.com/sindresorhus/eslint-package-json?sponsor=1","gitHead":"3260ba9783644bde8d2acc4005d8a97ab9d045a0","scripts":{"fix":"run-p --continue-on-error \"fix:*\"","lint":"run-p --continue-on-error \"lint:*\"","test":"npm-run-all --node-run --continue-on-error lint \"test:*\"","fix:js":"npm run lint:js -- --fix","lint:js":"eslint","test:js":"node --test --experimental-test-snapshots test/*.js","coverage":"node --test --experimental-test-snapshots --experimental-test-coverage test/*.js","create-rule":"node ./scripts/create-rule.js && npm run create-rules-index-file && npm run fix:eslint-docs","fix:markdown":"npm run lint:markdown -- --fix","fix:snapshots":"node --test --experimental-test-snapshots --test-update-snapshots test/*.js","lint:markdown":"markdownlint \"**/*.md\"","fix:eslint-docs":"eslint-doc-generator","lint:eslint-docs":"npm run fix:eslint-docs -- --check","run-rules-on-codebase":"eslint --config=./eslint.dogfooding.config.js","create-rules-index-file":"node ./scripts/create-rules-index-file.js"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"repository":{"url":"git+https://github.com/sindresorhus/eslint-package-json.git","type":"git"},"_npmVersion":"11.18.0","description":"Powerful ESLint rules for package.json","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"semver":"^7.8.5","@eslint/json":"^2.0.1","detect-indent":"^7.0.2","hosted-git-info":"^10.1.1","spdx-expression-parse":"^4.0.0","validate-npm-package-name":"^7.0.2"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","eslint":"^10.6.0","globals":"^17.7.0","outdent":"^0.8.0","enquirer":"^2.4.1","nano-spawn":"^2.1.0","open-editor":"^6.0.0","npm-run-all2":"^9.0.2","node-style-text":"^2.1.2","eslint-config-xo":"^0.57.0","markdownlint-cli":"^0.49.0","@babel/code-frame":"^8.0.0","eslint-plugin-jsdoc":"^63.0.12","eslint-doc-generator":"^3.6.0","eslint-plugin-eslint-plugin":"^7.4.1"},"peerDependencies":{"eslint":">=10.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-package-json_0.1.0_1783637383707_0.8292003161024781","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"eslint-package-json","version":"0.2.0","keywords":["eslint","eslintplugin","eslint-plugin","package.json","package-json","npm","manifest","linter","lint","json"],"author":{"url":"https://sindresorhus.com","name":"Sindre Sorhus","email":"sindresorhus@gmail.com"},"license":"MIT","_id":"eslint-package-json@0.2.0","maintainers":[{"name":"sindresorhus","email":"sindresorhus@gmail.com"}],"homepage":"https://github.com/sindresorhus/eslint-package-json#readme","bugs":{"url":"https://github.com/sindresorhus/eslint-package-json/issues"},"dist":{"shasum":"d389aff57e830b39db3794b9da99ca99029b31ac","tarball":"https://registry.npmjs.org/eslint-package-json/-/eslint-package-json-0.2.0.tgz","fileCount":96,"integrity":"sha512-13U+gZCnaZIPMUb8KNHUagdEQw6xeQVQERb+bg/di5RlOCNOJGq2Lnsx8qRvwDGRg/arVtfg3lxuhxsSxPzhcA==","signatures":[{"sig":"MEUCIC35JMvXY28mAkt6gntaIDQyBPXfK68z53i8QL3rSqdZAiEAnImRzrj04bMQjJTYyePxixLVH2kNMkMOrXWmbD/lwrk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":275055},"type":"module","types":"./index.d.ts","engines":{"node":">=22"},"exports":{"types":"./index.d.ts","default":"./index.js"},"funding":"https://github.com/sindresorhus/eslint-package-json?sponsor=1","gitHead":"f58565a0993ce7091760ab596d7d8f99dc11496b","scripts":{"fix":"run-p --continue-on-error \"fix:*\"","lint":"run-p --continue-on-error \"lint:*\"","test":"npm-run-all --node-run --continue-on-error lint \"test:*\"","fix:js":"npm run lint:js -- --fix","lint:js":"eslint","test:js":"node --test --experimental-test-snapshots test/*.js","coverage":"node --test --experimental-test-snapshots --experimental-test-coverage test/*.js","create-rule":"node ./scripts/create-rule.js && npm run create-rules-index-file && npm run fix:eslint-docs","fix:markdown":"npm run lint:markdown -- --fix","fix:snapshots":"node --test --experimental-test-snapshots --test-update-snapshots test/*.js","lint:markdown":"markdownlint \"**/*.md\"","fix:eslint-docs":"eslint-doc-generator","lint:eslint-docs":"npm run fix:eslint-docs -- --check","run-rules-on-codebase":"eslint --config=./eslint.dogfooding.config.js","create-rules-index-file":"node ./scripts/create-rules-index-file.js"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"repository":{"url":"git+https://github.com/sindresorhus/eslint-package-json.git","type":"git"},"_npmVersion":"11.18.0","description":"Powerful ESLint rules for package.json","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"semver":"^7.8.5","@eslint/json":"^2.0.1","detect-indent":"^7.0.2","hosted-git-info":"^10.1.1","npm-package-arg":"^14.0.0","spdx-expression-parse":"^4.0.0","validate-npm-package-name":"^7.0.2"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","eslint":"^10.6.0","globals":"^17.7.0","outdent":"^0.8.0","enquirer":"^2.4.1","nano-spawn":"^2.1.0","open-editor":"^6.0.0","npm-run-all2":"^9.0.2","node-style-text":"^2.1.2","eslint-config-xo":"^0.57.0","markdownlint-cli":"^0.49.0","@babel/code-frame":"^8.0.0","eslint-plugin-jsdoc":"^63.0.12","eslint-doc-generator":"^3.6.0","eslint-plugin-eslint-plugin":"^7.4.1"},"peerDependencies":{"eslint":">=10.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-package-json_0.2.0_1784054225219_0.7121201100175647","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"eslint-package-json","version":"0.3.0","keywords":["eslint","eslintplugin","eslint-plugin","package.json","package-json","npm","manifest","linter","lint","json"],"author":{"url":"https://sindresorhus.com","name":"Sindre Sorhus","email":"sindresorhus@gmail.com"},"license":"MIT","_id":"eslint-package-json@0.3.0","maintainers":[{"name":"sindresorhus","email":"sindresorhus@gmail.com"}],"homepage":"https://github.com/sindresorhus/eslint-package-json#readme","bugs":{"url":"https://github.com/sindresorhus/eslint-package-json/issues"},"dist":{"shasum":"b30c6f35064dfb8d5247e729d20ab3dae481af5c","tarball":"https://registry.npmjs.org/eslint-package-json/-/eslint-package-json-0.3.0.tgz","fileCount":97,"integrity":"sha512-znnM6ynvEBTTpQ/iq9hqY4OUcJ/O++wMxKpVqPu+Re/8wCsGvU0DUR/65xNI9u98ajCnn0wHkR+tAmrW2C2D3A==","signatures":[{"sig":"MEQCIA6GzxzPYnq/H5dusTU050VzMkwApbojG6SYFgccqg06AiAEWOnH1k7HC/Hqpox71sxNFzOB3dWKC7Vg18E2lxc/fw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":301999},"type":"module","types":"./index.d.ts","engines":{"node":">=22"},"exports":{"types":"./index.d.ts","default":"./index.js"},"funding":"https://github.com/sindresorhus/eslint-package-json?sponsor=1","gitHead":"a864cf155353a2cc2cbbf2c0dda1cf081dbe3687","scripts":{"fix":"run-p --continue-on-error \"fix:*\"","lint":"run-p --continue-on-error \"lint:*\"","test":"npm-run-all --node-run --continue-on-error lint \"test:*\"","fix:js":"npm run lint:js -- --fix","lint:js":"eslint","test:js":"node --test --experimental-test-snapshots test/*.js","coverage":"node --test --experimental-test-snapshots --experimental-test-coverage test/*.js","create-rule":"node ./scripts/create-rule.js && npm run create-rules-index-file && npm run fix:eslint-docs","fix:markdown":"npm run lint:markdown -- --fix","fix:snapshots":"node --test --experimental-test-snapshots --test-update-snapshots test/*.js","lint:markdown":"markdownlint \"**/*.md\"","fix:eslint-docs":"eslint-doc-generator","lint:eslint-docs":"npm run fix:eslint-docs -- --check","run-rules-on-codebase":"eslint --config=./eslint.dogfooding.config.js","create-rules-index-file":"node ./scripts/create-rules-index-file.js"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"repository":{"url":"git+https://github.com/sindresorhus/eslint-package-json.git","type":"git"},"_npmVersion":"12.0.1","description":"Powerful ESLint rules for package.json","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"semver":"^7.8.5","@eslint/json":"^2.0.1","detect-indent":"^7.0.2","hosted-git-info":"^10.1.1","npm-package-arg":"^14.0.0","spdx-expression-parse":"^4.0.0","validate-npm-package-name":"^7.0.2"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","eslint":"^10.6.0","globals":"^17.7.0","outdent":"^0.8.0","enquirer":"^2.4.1","nano-spawn":"^2.1.0","open-editor":"^6.0.0","npm-run-all2":"^9.0.2","node-style-text":"^2.1.2","eslint-config-xo":"^0.57.0","markdownlint-cli":"^0.49.0","@babel/code-frame":"^8.0.0","eslint-plugin-jsdoc":"^63.0.12","eslint-doc-generator":"^3.6.0","eslint-plugin-eslint-plugin":"^7.4.1"},"peerDependencies":{"eslint":">=10.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-package-json_0.3.0_1785014084450_0.061397284488406534","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"_id":"eslint-package-json@1.0.0","bugs":{"url":"https://github.com/sindresorhus/eslint-package-json/issues"},"dist":{"shasum":"1cc6cb52a85415d85faee94fcacabbd2ab876869","tarball":"https://registry.npmjs.org/eslint-package-json/-/eslint-package-json-1.0.0.tgz","fileCount":100,"integrity":"sha512-4TKfDJuIBYcMI02TXN27HnJu7VyJf91GkMIQHZtRZ6ZCBeL1/RfOv0ZEsoO4gAY5Ws4kAjtlw4nUfPHvGGHfyA==","signatures":[{"sig":"MEUCIQCA6XtQ0RffiLm+irPbt97PePKITesZMm7LIVUpwOP45QIgH7xSn0x0rCJRURSwkDncYX7puh8lWPQlLFHnLIN4Hwg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEOIcRBsWrUx2Z+KeZYuALDovZ+5E74zrAoNGXJPZxt7AiASvtB2j3i4HBQ9RiY6ZGFH+wBHbNmXRnPt71Ty/Axoig=="}],"unpackedSize":313307},"name":"eslint-package-json","type":"module","types":"./index.d.ts","author":{"url":"https://sindresorhus.com","name":"Sindre Sorhus","email":"sindresorhus@gmail.com"},"engines":{"node":">=22"},"exports":{"types":"./index.d.ts","default":"./index.js"},"funding":"https://github.com/sindresorhus/eslint-package-json?sponsor=1","gitHead":"087e47919512b935a64bb1e620d1bd0e6c397a19","license":"MIT","scripts":{"fix":"run-p --continue-on-error \"fix:*\"","lint":"run-p --continue-on-error \"lint:*\"","test":"npm-run-all --node-run --continue-on-error lint \"test:*\"","fix:js":"npm run lint:js -- --fix","lint:js":"eslint","test:js":"node --test --experimental-test-snapshots test/*.js","coverage":"node --test --experimental-test-snapshots --experimental-test-coverage test/*.js","create-rule":"node ./scripts/create-rule.js && npm run create-rules-index-file && npm run fix:eslint-docs","fix:markdown":"npm run lint:markdown -- --fix","fix:snapshots":"node --test --experimental-test-snapshots --test-update-snapshots test/*.js","lint:markdown":"markdownlint \"**/*.md\"","fix:eslint-docs":"eslint-doc-generator","lint:eslint-docs":"npm run fix:eslint-docs -- --check","run-rules-on-codebase":"eslint --config=./eslint.dogfooding.config.js","create-rules-index-file":"node ./scripts/create-rules-index-file.js"},"version":"1.0.0","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"homepage":"https://github.com/sindresorhus/eslint-package-json#readme","keywords":["eslint","eslintplugin","eslint-plugin","package.json","package-json","npm","manifest","linter","lint","json"],"repository":{"url":"git+https://github.com/sindresorhus/eslint-package-json.git","type":"git"},"_npmVersion":"12.0.1","description":"Powerful ESLint rules for package.json","directories":{},"maintainers":[{"name":"sindresorhus","email":"sindresorhus@gmail.com"}],"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"semver":"^7.8.5","@eslint/json":"^2.0.1","detect-indent":"^7.0.2","hosted-git-info":"^10.1.1","npm-package-arg":"^14.0.0","spdx-expression-parse":"^4.0.0","validate-npm-package-name":"^7.0.2"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","eslint":"^10.6.0","globals":"^17.7.0","outdent":"^0.8.0","enquirer":"^2.4.1","nano-spawn":"^2.1.0","open-editor":"^6.0.0","npm-run-all2":"^9.0.2","node-style-text":"^2.1.2","eslint-config-xo":"^0.57.0","markdownlint-cli":"^0.49.0","@babel/code-frame":"^8.0.0","eslint-plugin-jsdoc":"^63.0.12","eslint-doc-generator":"^3.6.0","eslint-plugin-eslint-plugin":"^7.4.1"},"peerDependencies":{"eslint":">=10.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-package-json_1.0.0_1789715247925_0.5705483045593693"}}},"time":{"created":"2026-07-08T10:34:32.632Z","modified":"2026-09-18T07:07:28.212Z","0.0.2":"2026-07-08T10:34:32.838Z","0.1.0":"2026-07-09T22:49:43.900Z","0.2.0":"2026-07-14T18:37:05.384Z","0.3.0":"2026-07-25T21:14:44.611Z","1.0.0":"2026-09-18T07:07:28.028Z"},"bugs":{"url":"https://github.com/sindresorhus/eslint-package-json/issues"},"author":{"url":"https://sindresorhus.com","name":"Sindre Sorhus","email":"sindresorhus@gmail.com"},"license":"MIT","homepage":"https://github.com/sindresorhus/eslint-package-json#readme","keywords":["eslint","eslintplugin","eslint-plugin","package.json","package-json","npm","manifest","linter","lint","json"],"repository":{"url":"git+https://github.com/sindresorhus/eslint-package-json.git","type":"git"},"description":"Powerful ESLint rules for package.json","maintainers":[{"name":"sindresorhus","email":"sindresorhus@gmail.com"}],"readme":"# eslint-package-json\n\n> Powerful ESLint rules for `package.json`\n\nLint and autofix your `package.json` files with ESLint, powered by [`@eslint/json`](https://github.com/eslint/json).\n\nThis plugin catches real `package.json` mistakes (invalid names, bad version ranges, broken `exports`, misplaced `@types/*`, redundant `files` entries, and more) and fixes many of them automatically.\n\n## Install\n\n```sh\nnpm install --save-dev eslint eslint-package-json\n```\n\n**Requires ESLint `>=10.4`, [flat config](https://eslint.org/docs/latest/use/configure/configuration-files), and [ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c#how-can-i-make-my-typescript-project-output-esm).**\n\n## Usage\n\nAdd the recommended config to your `eslint.config.js`:\n\n```js\nimport {defineConfig} from 'eslint/config';\nimport packageJson from 'eslint-package-json';\n\nexport default defineConfig({\n\tfiles: ['**/package.json'],\n\tplugins: {\n\t\t'package-json': packageJson\n\t},\n\textends: [\n\t\t'package-json/recommended'\n\t]\n});\n```\n\nThis lints every `package.json` in your project. To tweak individual rules, add them to the same config object:\n\n```js\nimport {defineConfig} from 'eslint/config';\nimport packageJson from 'eslint-package-json';\n\nexport default defineConfig({\n\tfiles: ['**/package.json'],\n\tplugins: {\n\t\t'package-json': packageJson\n\t},\n\textends: [\n\t\t'package-json/recommended'\n\t],\n\trules: {\n\t\t'package-json/dependency-version-range': [\n\t\t\t'error',\n\t\t\t{\n\t\t\t\trange: 'caret'\n\t\t\t}\n\t\t]\n\t}\n});\n```\n\nIf you prefer to wire it up manually instead of using a preset:\n\n```js\nimport json from '@eslint/json';\nimport {defineConfig} from 'eslint/config';\nimport packageJson from 'eslint-package-json';\n\nexport default defineConfig({\n\tfiles: ['**/package.json'],\n\tlanguage: 'json/json',\n\tplugins: {\n\t\tjson,\n\t\t'package-json': packageJson\n\t},\n\trules: {\n\t\t'package-json/valid-fields': 'error'\n\t}\n});\n```\n\n## Configs\n\n- `recommended` — Enables the rules that catch real, uncontroversial mistakes.\n- `all` — Enables every rule. Useful for discovering rules; not recommended for everyday use.\n\n## Rules\n\n<!-- begin auto-generated rules list -->\n\n💼 [Configurations](https://github.com/sindresorhus/eslint-package-json#configs) enabled in.\\\n✅ Set in the `recommended` [configuration](https://github.com/sindresorhus/eslint-package-json#configs).\\\n🔧 Automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/user-guide/command-line-interface#--fix).\\\n💡 Manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions).\n\n| Name                                                                                                   | Description                                                                               | 💼 | 🔧 | 💡 |\n| :----------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------- | :- | :- | :- |\n| [consistent-name-casing](docs/rules/consistent-name-casing.md)                                         | Enforce kebab-case for keys in `scripts` and `bin` objects.                               |    |    |    |\n| [consistent-path-prefix](docs/rules/consistent-path-prefix.md)                                         | Enforce consistent `./` prefix on local path fields.                                      | ✅  | 🔧 |    |\n| [dependency-version-range](docs/rules/dependency-version-range.md)                                     | Enforce a consistent version range style for dependencies.                                | ✅  |    | 💡 |\n| [description-format](docs/rules/description-format.md)                                                 | Enforce formatting of the `description` field.                                            |    | 🔧 |    |\n| [no-absolute-paths](docs/rules/no-absolute-paths.md)                                                   | Disallow absolute paths in path fields.                                                   | ✅  |    | 💡 |\n| [no-absolute-paths-in-scripts](docs/rules/no-absolute-paths-in-scripts.md)                             | Disallow absolute paths in scripts.                                                       | ✅  |    |    |\n| [no-backslash-paths](docs/rules/no-backslash-paths.md)                                                 | Enforce forward slashes in path fields.                                                   | ✅  | 🔧 |    |\n| [no-core-module-dependencies](docs/rules/no-core-module-dependencies.md)                               | Disallow dependencies that shadow Node.js built-in modules.                               | ✅  |    | 💡 |\n| [no-deprecated-fields](docs/rules/no-deprecated-fields.md)                                             | Disallow fields and scripts that npm has deprecated.                                      | ✅  |    |    |\n| [no-dist-tag-dependencies](docs/rules/no-dist-tag-dependencies.md)                                     | Disallow dist-tags as dependency specifiers.                                              | ✅  |    |    |\n| [no-duplicate-dependencies](docs/rules/no-duplicate-dependencies.md)                                   | Disallow a dependency listed in multiple dependency groups.                               | ✅  | 🔧 | 💡 |\n| [no-empty-fields](docs/rules/no-empty-fields.md)                                                       | Disallow empty fields.                                                                    | ✅  |    | 💡 |\n| [no-exact-peer-dependencies](docs/rules/no-exact-peer-dependencies.md)                                 | Disallow exact versions for peer dependencies.                                            |    |    | 💡 |\n| [no-exports-trailing-slash](docs/rules/no-exports-trailing-slash.md)                                   | Disallow trailing-slash folder mappings in `exports`/`imports`.                           | ✅  | 🔧 |    |\n| [no-fallback-export-arrays](docs/rules/no-fallback-export-arrays.md)                                   | Discourage string-target fallback arrays in `exports`/`imports`.                          | ✅  |    |    |\n| [no-git-dependencies](docs/rules/no-git-dependencies.md)                                               | Disallow git URLs as dependency specifiers.                                               |    |    |    |\n| [no-http-dependencies](docs/rules/no-http-dependencies.md)                                             | Disallow HTTP URLs as dependency specifiers.                                              | ✅  |    |    |\n| [no-incompatible-peer-dependency-ranges](docs/rules/no-incompatible-peer-dependency-ranges.md)         | Disallow incompatible ranges for peer dependencies also listed as runtime dependencies.   | ✅  |    | 💡 |\n| [no-install-scripts](docs/rules/no-install-scripts.md)                                                 | Disallow `install` lifecycle scripts.                                                     | ✅  |    | 💡 |\n| [no-invalid-direct-overrides](docs/rules/no-invalid-direct-overrides.md)                               | Disallow npm overrides that conflict with direct dependencies.                            | ✅  | 🔧 |    |\n| [no-local-dependencies](docs/rules/no-local-dependencies.md)                                           | Disallow local filesystem paths as dependency specifiers.                                 |    |    |    |\n| [no-manual-maintainers](docs/rules/no-manual-maintainers.md)                                           | Disallow a manually-set `maintainers` field.                                              | ✅  |    | 💡 |\n| [no-missing-files](docs/rules/no-missing-files.md)                                                     | Disallow missing files referenced by package metadata.                                    |    |    |    |\n| [no-nested-exports](docs/rules/no-nested-exports.md)                                                   | Disallow `exports` and `imports` in nested `package.json` files.                          | ✅  |    | 💡 |\n| [no-orphan-script-hooks](docs/rules/no-orphan-script-hooks.md)                                         | Disallow `pre`/`post` script hooks without a corresponding script.                        | ✅  |    |    |\n| [no-orphan-types](docs/rules/no-orphan-types.md)                                                       | Disallow `@types/*` packages without a corresponding dependency.                          | ✅  |    | 💡 |\n| [no-overrides-in-published-package](docs/rules/no-overrides-in-published-package.md)                   | Disallow `overrides` in packages that can be published.                                   | ✅  |    | 💡 |\n| [no-package-manager-engines](docs/rules/no-package-manager-engines.md)                                 | Disallow package manager versions in the `engines` field.                                 | ✅  |    | 💡 |\n| [no-pre-release-dependencies](docs/rules/no-pre-release-dependencies.md)                               | Disallow pre-release versions as dependency specifiers.                                   |    |    |    |\n| [no-redundant-files](docs/rules/no-redundant-files.md)                                                 | Disallow redundant entries in the `files` field.                                          | ✅  | 🔧 |    |\n| [no-redundant-repository-fields](docs/rules/no-redundant-repository-fields.md)                         | Disallow `bugs`/`homepage` values that duplicate what npm infers from `repository`.       |    | 🔧 |    |\n| [no-restricted-dependencies](docs/rules/no-restricted-dependencies.md)                                 | Disallow specific dependencies.                                                           |    |    |    |\n| [no-restricted-fields](docs/rules/no-restricted-fields.md)                                             | Disallow specific fields.                                                                 |    |    | 💡 |\n| [no-self-dependency](docs/rules/no-self-dependency.md)                                                 | Disallow a package depending on itself.                                                   | ✅  |    | 💡 |\n| [no-typo-fields](docs/rules/no-typo-fields.md)                                                         | Disallow misspelled package.json field names.                                             | ✅  | 🔧 |    |\n| [no-wildcard-dependencies](docs/rules/no-wildcard-dependencies.md)                                     | Disallow wildcard version ranges for dependencies.                                        | ✅  |    |    |\n| [no-workspace-protocol-in-published-package](docs/rules/no-workspace-protocol-in-published-package.md) | Disallow `workspace:` dependency specifiers in packages that can be published.            | ✅  |    |    |\n| [peer-dependencies-as-dev-dependencies](docs/rules/peer-dependencies-as-dev-dependencies.md)           | Enforce peer dependencies to also be listed in `devDependencies` at a compatible version. | ✅  |    | 💡 |\n| [prefer-engines-range](docs/rules/prefer-engines-range.md)                                             | Prefer open-ended `>=` ranges in the `engines` field.                                     | ✅  |    | 💡 |\n| [prefer-exports](docs/rules/prefer-exports.md)                                                         | Prefer an `exports`-first package interface.                                              | ✅  |    |    |\n| [prefer-files-field](docs/rules/prefer-files-field.md)                                                 | Require a `files` allowlist that covers published entry points.                           | ✅  |    |    |\n| [prefer-https-urls](docs/rules/prefer-https-urls.md)                                                   | Prefer `https://` URLs in metadata fields.                                                | ✅  | 🔧 |    |\n| [prefer-provenance](docs/rules/prefer-provenance.md)                                                   | Enforce npm provenance via `publishConfig.provenance`.                                    |    |    | 💡 |\n| [prefer-shorthand](docs/rules/prefer-shorthand.md)                                                     | Prefer the shorthand string form of fields where possible.                                | ✅  | 🔧 |    |\n| [prefer-side-effects-field](docs/rules/prefer-side-effects-field.md)                                   | Recommend declaring the `sideEffects` field for packages.                                 | ✅  |    | 💡 |\n| [prefer-type-module](docs/rules/prefer-type-module.md)                                                 | Prefer the `type` field to be `module`.                                                   | ✅  |    | 💡 |\n| [require-bin-executable](docs/rules/require-bin-executable.md)                                         | Require `bin` files to be executable by their owner.                                      | ✅  |    |    |\n| [require-bin-shebang](docs/rules/require-bin-shebang.md)                                               | Require `bin` files to start with a `#!/usr/bin/env node` shebang.                        | ✅  |    |    |\n| [require-default-condition](docs/rules/require-default-condition.md)                                   | Require a last `default` entry in `exports`/`imports` conditions objects.                 | ✅  |    |    |\n| [require-engines](docs/rules/require-engines.md)                                                       | Require the `engines.node` field.                                                         | ✅  |    |    |\n| [require-entry-point](docs/rules/require-entry-point.md)                                               | Require an entry point field.                                                             | ✅  |    |    |\n| [require-exports-root](docs/rules/require-exports-root.md)                                             | Require a usable `.` root entry in the `exports` field.                                   |    |    |    |\n| [require-fields](docs/rules/require-fields.md)                                                         | Require specific fields to be present, always or only for published packages.             | ✅  |    |    |\n| [require-private](docs/rules/require-private.md)                                                       | Require the `private` field to be `true`.                                                 |    |    | 💡 |\n| [require-private-when-workspaces](docs/rules/require-private-when-workspaces.md)                       | Require `private` when `workspaces` is set.                                               | ✅  |    | 💡 |\n| [require-types-in-exports](docs/rules/require-types-in-exports.md)                                     | Require correctly ordered and module-compatible types in `exports`.                       | ✅  |    |    |\n| [restrict-fields-when-private](docs/rules/restrict-fields-when-private.md)                             | Disallow fields that have no effect when the package is private.                          |    |    | 💡 |\n| [sort-dependencies](docs/rules/sort-dependencies.md)                                                   | Enforce alphabetical ordering of dependencies.                                            | ✅  | 🔧 |    |\n| [sort-files](docs/rules/sort-files.md)                                                                 | Enforce a canonical order for entries in the `files` field.                               | ✅  | 🔧 |    |\n| [sort-properties](docs/rules/sort-properties.md)                                                       | Enforce a canonical order for top-level package.json fields.                              | ✅  | 🔧 |    |\n| [sort-scripts](docs/rules/sort-scripts.md)                                                             | Enforce alphabetical ordering of scripts.                                                 |    | 🔧 |    |\n| [types-in-dev-dependencies](docs/rules/types-in-dev-dependencies.md)                                   | Enforce `@types/*` packages to be in `devDependencies`.                                   |    |    | 💡 |\n| [valid-fields](docs/rules/valid-fields.md)                                                             | Enforce valid values for package.json fields.                                             | ✅  | 🔧 | 💡 |\n\n<!-- end auto-generated rules list -->\n\n## FAQ\n\n### How is this different from [`eslint-plugin-package-json`](https://github.com/michaelfaith/eslint-plugin-package-json)?\n\nBoth lint `package.json` through ESLint, and `eslint-plugin-package-json` is a great project. I built this because I wanted a different design:\n\n- **Fewer, more powerful rules.** Instead of dozens of near-identical rules (one per field, one per dependency group), I use a handful of rules with options. For example, one `dependency-version-range` rule with a `dependencyTypes` option replaces a whole family of `no-caret-*` / `prefer-tilde-*` rules. Less to learn, less to configure.\n- **Native [`@eslint/json`](https://github.com/eslint/json).** I target ESLint's official JSON language directly, with no parser compatibility layer.\n- **Autofix-first.** Every rule that can safely fix or suggest a fix does.\n\n### Why not [`npm-package-json-lint`](https://github.com/tclindner/npm-package-json-lint)?\n\nIt's a separate CLI with its own config format and no autofix. This plugin lives inside ESLint, so it shares your editor integration, `--fix`, and flat config.\n\n### How do I disable a rule for `package.json`?\n\n`package.json` must be valid JSON, so it cannot contain comments.\n\nDisable the rule in `eslint.config.js` instead:\n\n```js\nimport {defineConfig} from 'eslint/config';\nimport packageJson from 'eslint-package-json';\n\nexport default defineConfig({\n\tfiles: ['**/package.json'],\n\tplugins: {\n\t\t'package-json': packageJson\n\t},\n\textends: [\n\t\t'package-json/recommended'\n\t],\n\trules: {\n\t\t'package-json/no-orphan-types': 'off',\n\t},\n});\n```\n\nUse a more specific `files` pattern when the rule should be disabled for only one package.\n\n## Related\n\n- [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) — Lots of awesome ESLint rules.\n- [eslint-node-test](https://github.com/sindresorhus/eslint-node-test) — ESLint rules for the Node.js built-in test runner.\n","readmeFilename":"readme.md"}