Vite+ 1.0 quer unificar o toolchain frontend em um único comando

Um projeto frontend moderno pode começar com Vite e, pouco tempo depois, acumular Vitest, ESLint, Prettier, um empacotador de bibliotecas, scripts para o monorepo, configuração de cache e algum gerenciador de versões do Node. Cada ferramenta resolve um problema real. O atrito aparece quando o time precisa manter todas elas alinhadas, especialmente durante upgrades.

O Vite+ 1.0 chega com uma proposta direta: colocar esse conjunto atrás de uma interface única. O comando vp cobre criação do projeto, instalação de dependências, servidor de desenvolvimento, lint, formatação, testes, build e execução de tarefas. A promessa não é inventar uma nova ferramenta para cada etapa, mas distribuir de forma integrada projetos que já existem no mesmo ecossistema.

O que existe dentro do Vite+

O pacote reúne Vite, Vitest, Rolldown, Oxlint, Oxfmt, tsdown e Vite Task. A CLI global também consegue selecionar a versão do Node e detectar o gerenciador de pacotes do workspace, seja pnpm, npm, Yarn ou Bun.

vp create
vp install
vp dev
vp check
vp test
vp build

A superfície menor de comandos tem valor principalmente em times e monorepos. Em vez de cada projeto inventar nomes diferentes para ações parecidas, vp check pode concentrar formatação, lint e verificação de tipos, enquanto vp test usa a versão do Vitest fornecida pelo toolchain.

Isso também tenta reduzir um problema chato de atualização: versões individualmente válidas nem sempre formam um conjunto compatível. O Vite+ fixa e atualiza as peças como uma distribuição. A conveniência vem justamente dessa curadoria.

Unificar comandos não elimina as ferramentas

Vale evitar uma leitura errada. O Vite+ não substitui Vite, Vitest ou os projetos da Oxc por implementações mágicas escondidas. Ele organiza versões, configuração e comandos em torno deles. Se um teste depende de comportamento específico do Vitest ou um plugin depende de uma API do Vite, essa realidade continua existindo.

A diferença é de propriedade. Em uma composição manual, o projeto decide quando atualizar cada peça. No Vite+, o conjunto distribuído passa a decidir boa parte desse alinhamento. Para equipes que querem uma base comum, isso corta manutenção. Para projetos com integrações muito específicas, pode diminuir a liberdade de atualizar uma ferramenta sem acompanhar as demais.

A migração mexe em mais coisas do que o package.json

Projetos existentes podem usar vp migrate. Segundo a documentação, a migração atualiza dependências, reescreve imports e scripts conhecidos, combina configurações compatíveis no vite.config.ts, ajusta arquivos do gerenciador de pacotes e pode preparar hooks, editor e instruções para agentes.

vp upgrade
vp migrate
vp install
vp check
vp test
vp build

Essa sequência não deve ser tratada como um botão sem volta. A própria documentação orienta executar a migração na raiz do workspace, preservar o lockfile original e revisar todas as alterações. Monorepos não podem migrar apenas um pacote isolado porque catálogos, overrides e lockfiles são compartilhados.

Também existem pré-requisitos. A migração parte de versões compatíveis do Vite e do Vitest, e integrações de browser mode podem exigir ajustes próprios. O comando automatiza mudanças conhecidas; ele não conhece todos os plugins, scripts internos e decisões acumuladas no repositório.

Vite Task adiciona cache, dependências e outro ponto de atenção

Uma parte interessante do pacote é o Vite Task. Tarefas definidas no vite.config.ts podem declarar dependências e usar cache. A ferramenta acompanha arquivos lidos, consultas a arquivos inexistentes, listagens de diretório e saídas gravadas. Quando entradas, argumentos e variáveis relevantes continuam iguais, ela restaura a saída e pula a execução.

import { defineConfig } from 'vite-plus';

export default defineConfig({
  run: {
    tasks: {
      build: {
        command: 'vp build',
        dependsOn: ['lint'],
        cache: {
          env: ['NODE_ENV'],
        },
      },
    },
  },
});

O cache local pode economizar tempo em tarefas repetidas, mas exige observar quais entradas realmente afetam o resultado. Variáveis omitidas ou arquivos acessados de uma forma que o rastreamento não percebe podem produzir um cache incorreto. O compartilhamento desse cache no GitHub Actions ainda é documentado como experimental, então vale medir e validar antes de colocá-lo como peça indispensável do CI.

Para quem essa unificação faz sentido

Vite+ parece especialmente interessante quando vários projetos repetem a mesma combinação de ferramentas, quando o onboarding depende de uma lista longa de versões ou quando um monorepo precisa de comandos e cache consistentes. O ganho está menos em digitar duas letras e mais em reduzir a quantidade de decisões locais que não diferenciam o produto.

Um projeto pequeno, estável e com Vite bem configurado não precisa migrar só porque surgiu uma versão 1.0. Também há motivo para esperar quando plugins críticos ainda não foram testados com a combinação distribuída, ou quando o time depende de atualizar Vite, Vitest e lint em calendários independentes.

A escolha é parecida com adotar qualquer toolchain opinativo: você troca parte da composição manual por uma base coordenada. Quando a base combina com o projeto, isso remove trabalho repetitivo. Quando não combina, a camada de conveniência vira mais uma configuração para contornar.

Fontes