c8 vs nyc: qual ferramenta de cobertura do Node para CI?
O c8 lê a cobertura nativa do V8 sem instrumentação; o nyc (istanbul) instrumenta o código para relatórios precisos e configuráveis.
O c8 usa a cobertura V8 embutida do Node para reportar sem instrumentar o source, o que é rápido e amigável a ESM. O nyc é a CLI do istanbul que instrumenta o código para uma cobertura detalhada e altamente configurável, o padrão de longa data do Node.
| c8 | nyc | |
|---|---|---|
| Método | Cobertura nativa do V8 | Instrumentação istanbul |
| Velocidade | Rápida (sem instrumentar) | Mais lenta |
| Suporte a ESM | Transparente | Funciona (config) |
| Precisão/config | Boa, menos ajustes | Muito precisa, configurável |
| Maturidade | Moderna | Padrão estabelecido |
No CI
O c8 é a escolha mais rápida e de menor atrito: ele lê os próprios dados de cobertura do V8 sem instrumentação em tempo de build e lida com ESM de forma transparente, o que reduz o tempo de cobertura. O nyc instrumenta o source para relatórios de linha/branch muito precisos e configuráveis e integra com muitos setups. Se velocidade e ESM importam, c8; se você precisa de relatórios e config istanbul granulares, nyc.
Cobertura no CI
Defina um threshold de cobertura para gatear regressões e faça upload do relatório para seu serviço de cobertura. Ambos adicionam trabalho sobre os testes; runners gerenciados mais rápidos encurtam execuções pesadas de cobertura independentemente da ferramenta.
O veredito
Quer cobertura rápida e amigável a ESM com config mínima: c8. Precisa de relatórios istanbul precisos e altamente configuráveis: nyc. Para projetos ESM modernos o c8 é frequentemente a vitória mais simples; o nyc permanece forte para relatórios detalhados.