EditorConfig & Configurações do VS Code
Garanta um comportamento consistente do editor em sua equipe com EditorConfig, configurações de workspace do VS Code e extensões recomendadas.
Busque em todas as páginas da documentação
Garanta um comportamento consistente do editor em sua equipe com EditorConfig, configurações de workspace do VS Code e extensões recomendadas.
🤖 Read the SystemsArchitect.io Blog for over 100+ cloud architecture articles 🔥
Cartão de receita de referência rápida - pronto para copiar e colar.
# Crie os três arquivos de configuração
touch .editorconfig
mkdir -p .vscode
touch .vscode/settings.json
touch .vscode/extensions.jsonQuando usar isso: Qualquer projeto com vários contribuidores, especialmente quando os membros da equipe usam editores diferentes ou configurações de VS Code.
# .editorconfig
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[Makefile]
indent_style = tab// .vscode/settings.json
{
// Formatação
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.tabSize": 2,
"editor.insertSpaces": true,
// Formatadores específicos de linguagem
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
// ESLint
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact"
],
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
// Arquivos
"files.eol": "\n",
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
"files.exclude": {
"**/.next": true,
"**/node_modules": true,
"**/out": true
},
// TypeScript
"typescript.preferences.importModuleSpecifier": "non-relative",
"typescript.suggest.autoImports": true,
"typescript.tsdk": "node_modules/typescript/lib"
}// .vscode/extensions.json
{
"recommendations": [
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"bradlc.vscode-tailwindcss",
"formulahendry.auto-rename-tag",
"yoavbls.pretty-ts-errors",
"streetsidesoftware.code-spell-checker"
]
}O que isso demonstra:
.editorconfig garante que as configurações básicas do editor (indentação, finais de linha) funcionem em todos os editores.vscode/settings.json configura a formatação ao salvar, integração com ESLint e preferências do TypeScript.vscode/extensions.json solicita aos membros da equipe que instalem extensões recomendadasEditorConfig.EditorConfig).vscode/settings.json na raiz do projeto atua como configurações de workspace, substituindo as configurações do usuário para este projeto.vscode/extensions.json aciona um prompt de "extensões recomendadas" quando os membros da equipe abrem o projetosource.fixAll.eslint executa a correção automática do ESLint ao salvar, corrigindo problemas de linting juntamente com a formataçãoPara Biome em vez de Prettier + ESLint:
// .vscode/settings.json
{
"editor.defaultFormatter": "biomejs.biome",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"quickfix.biome": "explicit",
"source.organizeImports.biome": "explicit"
}
}// .vscode/extensions.json
{
"recommendations": [
"biomejs.biome",
"bradlc.vscode-tailwindcss"
]
}Desativando formatação ao salvar para linguagens específicas:
{
"[markdown]": {
"editor.formatOnSave": false
}
}Referência de opções do EditorConfig:
| Opção | Valores | O Que Faz |
|---|---|---|
indent_style | space ou tab | Tipo de indentação |
indent_size | número | Espaços por nível de indentação |
end_of_line | lf ou crlf | Estilo de final de linha |
charset | utf-8 | Codificação do arquivo |
trim_trailing_whitespace | true ou false | Remove espaços em branco no final de linha ao salvar |
insert_final_newline | true ou false | Garante que o arquivo termine com uma nova linha |
// Configurações do VS Code que melhoram a DX do TypeScript:
// - "typescript.preferences.importModuleSpecifier": "non-relative"
// → Usa aliases de caminho (@/components) em vez de ../../../
//
// - "typescript.suggest.autoImports": true
// → Sugestões de importação automática enquanto você digita
//
// - "typescript.tsdk": "node_modules/typescript/lib"
// → Usa a versão do TypeScript do projeto, não a integrada do VS CodeCoisas que vão te morder. Cada armadilha inclui o que dá errado, por que acontece e a correção.
Conflitos entre EditorConfig e Prettier - EditorConfig define indent_size = 4 mas o Prettier usa tabWidth: 2. O Prettier vence para arquivos formatados, mas novos arquivos criados pelo editor usam o valor do EditorConfig. Correção: Mantenha as configurações do EditorConfig e do Prettier sincronizadas.
.vscode/ em .gitignore - Alguns templates adicionam .vscode/ ao .gitignore. Correção: Commite .vscode/settings.json e .vscode/extensions.json para consistência da equipe. Adicione .vscode/*.code-workspace e .vscode/launch.json ao .gitignore em vez disso (esses são pessoais).
Formatação ao salvar não funciona - Múltiplos formatadores estão instalados e o VS Code não sabe qual usar. Correção: Defina "editor.defaultFormatter" globalmente e por linguagem. O VS Code solicita que você escolha quando há ambiguidade.
Correção ESLint ao salvar entra em conflito com formatação ao salvar - Ambos são executados ao salvar e podem produzir alterações concorrentes. Correção: Use eslint-config-prettier para desativar as regras de formatação do ESLint, para que o ESLint apenas corrija problemas de qualidade de código ao salvar.
Outras maneiras de resolver o mesmo problema - e quando cada uma é a melhor escolha.
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
Apenas .editorconfig | A equipe usa editores mistos (VS Code, IntelliJ, Vim) | Você quer formatação ao salvar e recomendações de extensão |
Apenas .vscode/settings.json | Todos usam VS Code | Membros da equipe usam outros editores |
devcontainers | Você quer um ambiente de desenvolvimento totalmente reproduzível, incluindo extensões | A sobrecarga da configuração do contêiner é muito alta |
settings.json e extensions.json.launch.json e *.code-workspace ao .gitignore.eslint-config-prettier para evitar conflitos entre os dois.indent_size em .editorconfig e tabWidth em .prettierrc idênticos.{
"[markdown]": {
"editor.formatOnSave": false
}
}esbenp.prettier-vscode -- Formatador Prettierdbaeumer.vscode-eslint -- Integração ESLintbradlc.vscode-tailwindcss -- Tailwind IntelliSenseyoavbls.pretty-ts-errors -- Erros TypeScript legíveisrecommendations.{ "typescript.tsdk": "node_modules/typescript/lib" }tsc produz no CI.eslint-config-prettier para desativar as regras de formatação do ESLint para que o ESLint apenas corrija problemas de qualidade de código.EditorConfig.EditorConfig.{
"typescript.preferences.importModuleSpecifier": "non-relative",
"typescript.suggest.autoImports": true
}"non-relative" usa aliases de caminho (@/components) em vez de ../../../.autoImports habilita sugestões enquanto você digita.| Opção | Recomendado |
|---|---|
indent_style | space |
indent_size | 2 |
end_of_line | lf |
insert_final_newline | true |
trim_trailing_whitespace | true |
Revisado por Chris St. John·Última atualização: 10 de jul. de 2026
🤖 Read the SystemsArchitect.io Blog for over 100+ cloud architecture articles 🔥