{"id":20420,"library":"prettier-plugin-solidity","title":"Prettier Plugin for Solidity","description":"A Prettier plugin for automatically formatting Solidity smart contract code. Current version is 2.3.1, with major version 2 (2024) switching from ANTLR to Nomic Foundation's Slang parser, improving correctness and comment handling. Requires Node >=20 and Prettier >=3.0.0. Formally maintained, with frequent patch releases. Key differentiator: it is the de facto standard formatter for Solidity, tightly integrated with Prettier's ecosystem.","status":"active","version":"2.3.1","language":"javascript","source_language":"en","source_url":"https://github.com/prettier-solidity/prettier-plugin-solidity","tags":["javascript","ethereum","plugin","prettier","slang","solidity"],"install":[{"cmd":"npm install prettier-plugin-solidity","lang":"bash","label":"npm"},{"cmd":"yarn add prettier-plugin-solidity","lang":"bash","label":"yarn"},{"cmd":"pnpm add prettier-plugin-solidity","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"required peer dependency","package":"prettier","optional":false}],"imports":[{"note":"ESM default import; CommonJS require is possible for Node but not recommended.","wrong":"const solidityPlugin = require('prettier-plugin-solidity')","symbol":"prettier-plugin-solidity","correct":"import solidityPlugin from 'prettier-plugin-solidity'"},{"note":"Standalone build is a default export from a subpath, not a named export.","wrong":"import { standalone } from 'prettier-plugin-solidity'","symbol":"standalone","correct":"import solidityPlugin from 'prettier-plugin-solidity/standalone'"},{"note":"In .prettierrc, plugins must be string module names, not imported objects.","wrong":"plugins: ['prettier-plugin-solidity']","symbol":"plugins","correct":"plugins: [require('prettier-plugin-solidity')]"}],"quickstart":{"code":"// Install: npm install --save-dev prettier prettier-plugin-solidity\n// .prettierrc (JSON)\n{\n  \"plugins\": [\"prettier-plugin-solidity\"],\n  \"parser\": \"slang\",\n  \"tabWidth\": 4,\n  \"overrides\": [{\n    \"files\": \"*.sol\",\n    \"options\": {\n      \"compiler\": \"0.8.0\"\n    }\n  }]\n}\n// Run: npx prettier --write 'contracts/**/*.sol'","lang":"typescript","description":"Installs the plugin, configures Prettier for Solidity using Slang parser, and runs formatting."},"warnings":[{"fix":"Update .prettierrc: set parser to 'slang' (or remove explicit parser).","message":"v2.0.0 switched default parser from 'solidity-parse' (ANTLR) to 'slang'. Old configs with 'solidity-parse' will cause errors.","severity":"breaking","affected_versions":"<2.0.0"},{"fix":"Use 'slang' parser instead.","message":"The 'solidity-parse' parser is deprecated in v2 and will be removed in a future major release.","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Upgrade Node to 20 or later.","message":"Node >=20 is required. Older Node versions will fail at install time.","severity":"gotcha","affected_versions":">=2.0.0"},{"fix":"Upgrade Prettier to 3.x.","message":"Peer dependency on Prettier >=3.0.0. Prettier v2 is not supported.","severity":"gotcha","affected_versions":">=2.0.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 prettier-plugin-solidity'.","cause":"Plugin not installed or not in node_modules.","error":"Error: Couldn't resolve plugin \"prettier-plugin-solidity\""},{"fix":"Set plugins array correctly: [\"prettier-plugin-solidity\"].","cause":"Incorrect plugin name or path in .prettierrc.","error":"Error: Cannot find module 'prettier-plugin-solidity'"},{"fix":"Add a valid compiler version string, e.g., \"compiler\": \"0.8.0\".","cause":"Missing or malformed compiler option in .prettierrc.","error":"TypeError: Invalid Version: undefined"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}