{"id":20398,"library":"prettier-plugin-package","title":"Prettier Plugin Package","description":"An opinionated package.json formatter plugin for Prettier, enforcing a consistent key ordering style popularized by Sindre Sorhus. v2.0.0 requires Node >=20.19.0 and Prettier ^3.0.0. It sorts top-level keys, and alphabetizes scripts, files, and engines. Differentiates from other package.json formatters by its strict opinionated ordering and automatic key classification. Released under MPL-2.0, maintained by shellscape, with monthly releases.","status":"active","version":"2.0.0","language":"javascript","source_language":"en","source_url":"https://github.com/shellscape/prettier-plugin-package","tags":["javascript","package","package.json","plugin","prettier"],"install":[{"cmd":"npm install prettier-plugin-package","lang":"bash","label":"npm"},{"cmd":"yarn add prettier-plugin-package","lang":"bash","label":"yarn"},{"cmd":"pnpm add prettier-plugin-package","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency; required at runtime as a plugin host","package":"prettier","optional":false}],"imports":[{"note":"Since v2, Prettier automatically loads plugins from node_modules; no configuration required.","wrong":"import plugin from 'prettier-plugin-package' // Incorrect: plugins are auto-discovered","symbol":"prettier-plugin-package","correct":"// No explicit import needed; Prettier auto-loads plugins"},{"note":"Plugins can be specified as strings or objects; string is idiomatic.","wrong":"const plugin = require('prettier-plugin-package'); module.exports = { plugins: [plugin] } // Works but redundant; string form is preferred","symbol":"Prettier custom config (plugin)","correct":"// prettier.config.js\nmodule.exports = { plugins: ['prettier-plugin-package'] }"},{"note":"The plugin does not accept any options; behavior is fully opinionated.","wrong":"// prettier.config.js\nmodule.exports = { plugins: ['prettier-plugin-package'], packageSortOrder: 'custom' } // No such option","symbol":"Plugin options (none)","correct":"// No plugin-specific options"}],"quickstart":{"code":"// Install: npm install --save-dev prettier prettier-plugin-package\n\n// package.json (initial state)\n{\n  \"devDependencies\": { \"prettier\": \"^3.0.0\" },\n  \"scripts\": { \"build\": \"echo build\", \"test\": \"echo test\", \"lint\": \"echo lint\" },\n  \"description\": \"My package\",\n  \"name\": \"my-pkg\",\n  \"version\": \"1.0.0\"\n}\n\n// After running: npx prettier --write package.json\n// The keys will be reordered per the plugin's sort order:\n{\n  \"name\": \"my-pkg\",\n  \"version\": \"1.0.0\",\n  \"description\": \"My package\",\n  \"scripts\": {\n    \"build\": \"echo build\",\n    \"lint\": \"echo lint\",\n    \"test\": \"echo test\"\n  },\n  \"devDependencies\": {\n    \"prettier\": \"^3.0.0\"\n  }\n}","lang":"javascript","description":"Demonstrates automatic sorting of keys and scripts in package.json after running Prettier with the plugin."},"warnings":[{"fix":"Upgrade Node.js to v20.19.0 or later, or use prettier-plugin-package@1.4.0 for Node 14+ and Prettier v2.","message":"Node.js >=20.19.0 required (v2 release)","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Use prettier-plugin-package@1.4.0 for Prettier v2, or @0.3.1 for Prettier v1.","message":"Prettier v3 only (v2 release). v1.x and v2.x not supported.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Ensure you use Prettier v2+ and run via standard prettier --write. No migration steps required.","message":"Plugin no longer uses preprocess; switched to parser in v0.3.0. Behavior may differ.","severity":"breaking","affected_versions":">=0.3.0"},{"fix":"Review resulting package.json order; if custom keys appear in unexpected order, consider renaming keys to match alphabetical order or accept the opinionated sort.","message":"Unknown keys are sorted alphabetically after known keys. This may reorder unsorted custom keys unexpectedly.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Verify that your files array after formatting includes all intended entries; the plugin ensures README.md and LICENSE are last if present.","message":"The files array gets reordered: alphabetical, with negations kept together, and README.md / LICENSE appended if present.","severity":"gotcha","affected_versions":">=0.3.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Run npm install --save-dev prettier-plugin-package. Ensure prettier is also installed.","cause":"Plugin not installed or not in node_modules when running Prettier.","error":"Cannot find module 'prettier-plugin-package'"},{"fix":"Run Prettier explicitly on package.json: npx prettier --write package.json","cause":"Prettier invoked without a file; plugin only formats package.json, not other files.","error":"Error: No parser and no file path given, couldn't infer a parser."},{"fix":"Upgrade Node.js to >=20.19.0 or downgrade plugin to v1.4.0 using npm install prettier-plugin-package@1.4.0 --save-dev","cause":"Node.js version below 20.19.0 with plugin v2.","error":"prettier-plugin-package: Node.js version 20.19.0 is required. Current version: ..."},{"fix":"Install prettier v3: npm install prettier@^3.0.0 or downgrade plugin to v1.4.0 with npm install prettier-plugin-package@1.4.0 --save-dev","cause":"Prettier v2 is installed but plugin v2 requires v3.","error":"prettier-plugin-package: prettier version ^3.0.0 is required."}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}