oxlint-plugin-vize Alpha
Hoje estou abrindo a primeira alfa de oxlint-plugin-vize, uma nova ponte plugin Oxlint JS para Vize Patina.
O objetivo é simples: manter Oxlint como principal runner para as regras JavaScript e TypeScript, enquanto permite que o Vize contribua com diagnósticos específicos do Vue na mesma execução. Em vez de escolher entre Oxlint e Patina, esse alfa é sobre fazê-los trabalhar juntos.
O que é
oxlint-plugin-vize permite que o Oxlint execute o Patina através do binding nativo do Vize, ainda usando o modelo de plugin JS e a configuração de regras do Oxlint.
Isso significa que um único .oxlintrc.json pode misturar regras como:
Regras básicas de Oxlint, como
no-consolePlugin de
vueembutido do OxlintRegras vize como
vize/vue/require-v-for-keyDiagnósticos de Vue com patina atrás como
vize/vue/no-v-htmlevize/vue/no-duplicate-attributes
O plugin usa o namespace vize e lê as configurações de settings.vize.
Por que esse alfa importa
A Patina já entende bem os templates do Vue, mas muitas equipes querem que o Oxlint fique no centro do fluxo de trabalho de lint.
Este alfa é o primeiro passo para essa forma:
um comando de fiapos
um arquivo de configuração
um fluxo de saída
Regras JavaScript e TypeScript nativas de Rust junto com diagnósticos Vue com modelos
Para projetos do Vue, essa combinação importa. Regras modelos, como falta de chaves de v-for ou uso inseguro de v-html , deveriam poder ficar ao lado das regras gerais do Oxlint, em vez de exigir um lint pass separado e um formato de relatório separado.
Exemplo de Configuração
{
"plugins": ["vue"],
"jsPlugins": ["oxlint-plugin-vize"],
"settings": {
"vize": {
"locale": "en",
"helpLevel": "none"
}
},
"rules": {
"no-console": "warn",
"vize/vue/require-v-for-key": "error",
"vize/vue/no-v-html": "warn",
"vize/vue/no-duplicate-attributes": "error"
}
}
O alfa atualmente suporta:
settings.vize.localepara linguagem diagnósticasettings.vize.helpLevelcom"full","short"ou"none"showHelppara retrocompatibilidadesettings.patinacomo um alias de compatibilidade enquantosettings.vizese torna a chave canônica
Como Funciona
A ponte foi projetada com base no modelo de execução por regra da Oxlint, em vez de lutar contra ele.
A primeira regra habilitada do Vize em um arquivo executa um passe nativo de Patina apenas para essa regra.
Se uma segunda regra do Vize for ativada para o mesmo arquivo, o plugin atualiza para uma passagem Patina de arquivo completo compartilhada e reutiliza o resultado para as regras Vize restantes.
O conteúdo do arquivo e os resultados das regras são armazenados em cache por arquivo e configurações durante toda a vida útil do processo Oxlint.
Esse design mantém a primeira regra barata, mas ainda evita trabalhos nativos redundantes quando várias regras do Vize estão ativas.
Diagnóstico e Saída
Uma das partes difíceis dessa integração é o relatório de localização.
O sistema de plugins JS da Oxlint atualmente funciona a partir do programa de scripts extraído do Vue, enquanto muitos diagnósticos do Patina se originam em blocos <template> ou outros SFC. Nessa alfa, oxlint-plugin-vize mantém o bloco real do Vue e line:column em linha na mensagem de diagnóstico, assim a saída ainda te direciona para o lugar certo no SFC.
O repositório também inclui um pequeno exemplo examples/oxlint-vize para mostrar resultados mistos de:
Diagnóstico de núcleo Oxlint
Suporte embutido para Vue da Oxlint
Diagnóstico Vize com patina traseira
Limitações Atuais
Ainda é um alfa, e algumas limitações são importantes para destacar claramente:
Plugins JS Oxlint atualmente dependem do script extraído do programa Vue, então arquivos sem
<script>ou<script setup>ainda não invocam o plugin.Âncoras de diagnóstico ainda apontam para o programa script quando o Oxlint não consegue aceitar diretamente o intervalo original de templates.
O pacote alfa inicial tinha como alvo o Nó 24+; as versões atuais suportam Node 22 e Node 24+.
O suporte a plugins JS do Oxlint ainda está evoluindo, então algumas arestas aqui são restrições a montante, e não comportamentos apenas do Vize.
Por que Alpha Agora
Queria colocar essa integração nas mãos das pessoas cedo, mesmo antes de todos os casos excepcionais serem polidos.
A forma central já parece útil:
Vize traz inteligência específica de fiapos para a Vue
Oxlint continua sendo o corredor de alto nível
a superfície de configuração permanece pequena
O modelo de desempenho permanece prioritário no nativo
Isso já é suficiente para começar a receber feedback real de usuários do Vue que querem uma pilha de fiapos mais rápida sem abrir mão de verificações que conseguem usar templates.
O que vem a seguir
Os próximos passos são simples:
melhorar o mapeamento de localização de templates à medida que o Oxlint expõe mais hooks de plugins conscientes do Vue
Endureça o fluxo de instalação e publicação em torno de bindings nativos de plataforma
expanda a documentação e exemplos para configurações reais de projetos
continue refinando como o texto de ajuda da pátina é apresentado dentro dos formadores de Oxlint
Esse alfa não é o estado final. É a primeira ponte utilizável entre Oxlint e o linting Vue da Vize, e estou animado para ver para onde ela vai a seguir.