Prettier plugin for Solidity
A Prettier Plugin for automatically formatting your Solidity code.
If you like this project, please consider contributing to our Gitcoin grant!
Install both
prettierand
prettier-plugin-solidity:
npm install --save-dev prettier prettier-plugin-solidity
Run prettier in your contracts:
npx prettier --write 'contracts/**/*.sol'
You can add a script for running prettier on all your contracts:
"prettier": "prettier --write 'contracts/**/*.sol'"
Or you can use it as part of your linting to check that all your code is prettified:
"lint": "prettier --list-different 'contracts/**/*.sol'"
These are some of the projects using Prettier Solidity:
To integrate this plugin with vim, first install
vim-prettier. These instructions assume you are using
vim-plug. Add this to your configuration:
Plug 'prettier/vim-prettier', { \ 'do': 'yarn install && yarn add prettier-plugin-solidity', \ 'branch': 'release/1.x', \ 'for': [ \ 'javascript', \ 'typescript', \ 'css', \ 'less', \ 'scss', \ 'json', \ 'graphql', \ 'markdown', \ 'vue', \ 'lua', \ 'php', \ 'python', \ 'ruby', \ 'html', \ 'swift', \ 'solidity'] }
We modified the
doinstruction to also install this plugin. Then you'll have to configure the plugin to always use the version installed in the vim plugin's directory:
let g:prettier#exec_cmd_path = '~/.vim/bundle/vim-prettier/node_modules/.bin/prettier'
To check that everything is working, open a solidity file and run
:Prettier.
If you also want to autoformat every time you write the buffer, add these lines:
let g:prettier#autoformat = 0 autocmd BufWritePre *.sol Prettier
Now Prettier will be run every time the file is saved.
VSCode is not familiar with the solidity language, so
solidity supportneeds to be installed.
code --install-extension JuanBlanco.solidity
Having done that you should proceed to install
prettier-vscode.
code --install-extension esbenp.prettier-vscode
To interact with 3rd party plugins,
prettier-vscodewill look in the project's npm modules, so you'll need to have
prettierand
prettier-plugin-solidityin your
package.json
npm install --save-dev prettier prettier-plugin-solidity
As a final check, make sure that VSCode is configured to format files on save.
You'll notice now that
prettieris formatting every time the files are saved but the indentation is using 2 spaces instead of 4. This has been reported and in the meantime you can use the following configuration in your
.prettierrcfile:
{ "overrides": [ { "files": "*.sol", "options": { "printWidth": 80, "tabWidth": 4, "useTabs": false, "singleQuote": false, "bracketSpacing": false, "explicitTypes": "always" } } ] }
Note: When you install the npm package
prettierin your project and create a
.prettierrcfile (which wasn't in your project before this), your VSCode's default settings or rules in
settings.jsonare ignored (prettier/prettier-vscode#1079).
If you want a different configuration for your javascript and solidity files, you can add an overrides property to your
.prettierrc.
git checkout -b feature/fooBar)
git commit -am 'Add some fooBar')
git push origin feature/fooBar)
Distributed under the MIT license. See LICENSE for more information.