Skip to content

Esta página explica a ideia principal do oxc_language_server e em que ele difere da CLI. Se quiser entender melhor a comunicação entre o language server e o editor, a documentação oficial do LSP/LSIF é um ótimo começo. O README.md do language server resume as especificações relevantes.

Nota: aqui falamos muito em “ferramentas” — é um conceito abstrato para a lógica central do oxlint e do oxfmt.

Conceito do oxc_language_server ao implementar ferramentas

O oxc_language_server pode ser usado para evoluir seu próprio script até ele funcionar como language server. O servidor, por si só, não altera arquivos nem cria sugestões: isso é papel da ferramenta. Em vez disso, ele gerencia as pastas do workspace e toda a comunicação para carregar a configuração certa. Para falar com as ferramentas fornecidas, o servidor expõe os traits ToolBuilder e Tool.

Diferença entre Language Server e CLI

O editor altera o arquivo; o servidor comunica as mudanças

Um detalhe pequeno, mas importante: quem mexe no arquivo e quem aplica o conserto. As ferramentas de CLI gravam as mudanças no disco. O language server (oxc) nunca deve gravar direto no disco — só comunica as mudanças ao editor.

Pastas do workspace

Quando você abre um projeto git no editor, isso é uma pasta de workspace. O LSP permite abrir vários projetos (git) ao mesmo tempo. Cada projeto pode ter sua própria configuração (veja a parte seguinte), mas o essencial é ter um “contexto” próprio com um URI de workspace. Pense no URI do workspace como o equivalente ao “diretório de trabalho atual” da ferramenta CLI. Lembre-se de que o editor pode adicionar ou remover pastas de workspace.

Configurações (por pasta)

O language server pode ser configurado (como flags da CLI); no oxc vale isto: cada pasta de workspace pode ter sua configuração. Exemplo: o projeto git A usa lint com type-aware; o projeto git B usa fixes perigosos ao salvar.

Mudança de configuração

Surpresa: o usuário pode mudar a configuração do language server em tempo real. O editor envia a configuração atualizada. Hoje o servidor repassa a cada ferramenta a configuração antiga e a nova, para elas tratarem o que for preciso. Conforme a configuração, a ferramenta pode reiniciar ou se reconstruir.

Padrões de watch e arquivos observados

Sua ferramenta pode pedir ao editor para observar certos padrões (globs) de arquivo e avisar o servidor quando um arquivo for alterado/criado/apagado. Isso é usado sobretudo para .ox**rc.json e arquivos referenciados dentro dele (por exemplo extends no oxlint). Dependendo da configuração do workspace e da ferramenta, pode ser necessário reiniciar/reconstruir de novo.