Cheatsheet Prettier
Formatador de código opinativo para JavaScript, CSS e mais
Prettier
19
cards encontrados
Categorias:
Versões:
CLI
Formatar ficheiros
npx prettier --write "src/**/*.js"
npx prettier --write .
npx prettier --check "src/**"
npx prettier --write "*.css"
Formatar ou verificar.
Flags úteis
--write # formatar in-place
--check # só verificar (CI)
--list-different # listar diferentes
--ignore-path .gitignore
--config .prettierrc
Opções de CLI.
Scripts npm
"scripts": {
"format": "prettier --write .",
"format:check": "prettier --check .",
"format:src": "prettier --write src/"
}Scripts de formatação.
Configuração
.prettierrc
{
"semi": true,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "es5",
"printWidth": 80,
"bracketSpacing": true
}Ficheiro de configuração.
Formatos de config
.prettierrc (JSON)
.prettierrc.json
.prettierrc.yml
.prettierrc.js
prettier.config.js
"prettier": {} no package.json
Formatos aceites.
.prettierignore
node_modules
dist
build
coverage
package-lock.json
*.min.js
Excluir ficheiros.
Overrides
{
"overrides": [
{
"files": "*.md",
"options": { "proseWrap": "always" }
},
{
"files": "*.css",
"options": { "singleQuote": false }
}
]
}Regras por tipo de ficheiro.
Editores
VS Code
Extensão: esbenp.prettier-vscode
settings.json:
"editor.defaultFormatter":
"esbenp.prettier-vscode",
"editor.formatOnSave": true,
"prettier.requireConfig": true
Format on save no VS Code.
Format on save
// Por linguagem:
"[javascript]": {
"editor.defaultFormatter":
"esbenp.prettier-vscode"
},
"[json]": {
"editor.formatOnSave": true
}
Config por linguagem.
Outros editores
WebStorm: Settings → Prettier
Vim: prettier --write %:p
Neovim: null-ls / conform.nvim
Sublime: JsPrettier package
Integração noutros editores.
Opções
Opções principais
printWidth: 80 # largura máx
tabWidth: 2 # indentação
useTabs: false # tabs vs spaces
semi: true # ponto e vírgula
singleQuote: false # aspas simples
quoteProps: "as-needed"
Opções de formatação.
Opções avançadas
trailingComma: "all" # vírgula final
bracketSpacing: true # { a: 1 }
arrowParens: "always" # (x) =>
endOfLine: "lf"
jsxSingleQuote: false
proseWrap: "preserve"
Opções adicionais.
Comentários especiais
// prettier-ignore
const x = {a:1,b:2};
/* prettier-ignore */
.foo { display: flex; }
Ignorar formatação pontual.
Integração
Prettier + ESLint
npm i -D eslint-config-prettier
// .eslintrc.js
extends: [
"eslint:recommended",
"prettier" // desliga conflitos
]
Evitar conflitos ESLint/Prettier.
Git hooks (lint-staged)
npm i -D lint-staged husky
// package.json
"lint-staged": {
"*.{js,css,md}": "prettier --write"
}
// .husky/pre-commit
npx lint-staged
Formatar antes de commit.
CI (verificação)
# GitHub Actions
- name: Check formatting
run: npx prettier --check .
# Falha se houver ficheiros
# não formatados
Verificar em CI/CD.
Linguagens
Formatos suportados
JavaScript / TypeScript / JSX
CSS / SCSS / Less
HTML / Vue / Angular
JSON / YAML / TOML
Markdown / GraphQL
Flow
Linguagens suportadas.
Plugins
prettier-plugin-tailwindcss
prettier-plugin-organize-imports
prettier-plugin-sort-json
prettier-plugin-java
prettier-plugin-php
@prettier/plugin-xml
Estender com plugins.
Exemplo antes/depois
// Antes:
const x={a:1,b:2,c:[1,2,3,4,5,6,7,8,9,10,11,12]}
// Depois (Prettier):
const x = {
a: 1,
b: 2,
c: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
};
Resultado da formatação.