Anotações de Comentários
O Vize fornece anotações baseadas em comentários para controlar o linting, diagnósticos e comportamento de codegen. Existem dois sistemas de anotação dependendo de onde são usados:
<!-- @vize:xxx -->— comentários HTML em<template>(diretivas Patina linter)// @vize forget: reason— Comentários JS em<script>(supressão de análise entre arquivos)
Todas as diretivas @vize: template são removidas da saída da compilação — elas nunca aparecem no código de produção.
Diretivas Modelo (@vize:)
Usado dentro <template> como comentários em HTML. Esses controlam o comportamento da Pátina (o linter embutido).
@vize:expected
Espere um diagnóstico na próxima linha. Se não for feito diagnóstico, isso é uma operação proibida. Semelhante ao @ts-expect-error.
<template>
<ul>
<!-- @vize:expected -->
<li v-for="item in items">{{ item }}</li>
</ul>
</template>
@vize:ignore-start / @vize:ignore-end
Suprima todos os diagnósticos dentro de uma região.
<template>
<!-- @vize:ignore-start -->
<ul>
<li v-for="item in items">{{ item }}</li>
</ul>
<!-- @vize:ignore-end -->
</template>
@vize:level(warn|error|off)
Anule a gravidade dos diagnósticos na próxima linha.
<template>
<!-- @vize:level(warn) -->
<img src="/photo.png" />
<!-- @vize:level(off) -->
<li v-for="item in items">{{ item }}</li>
</template>
| Valor | Efeito |
|---|---|
warn |
Rebaixamento para aviso |
error |
Upgrade para erro |
off |
Suprimir completamente |
@vize:todo
Emita um aviso de TUDO.
<template>
<!-- @vize:todo add loading state -->
<div>{{ data }}</div>
</template>
@vize:fixme
Emita um erro FIXME.
<template>
<!-- @vize:fixme broken on mobile -->
<div class="layout">...</div>
</template>
@vize:deprecated
Emita um aviso de depreciação.
<template>
<!-- @vize:deprecated use NewComponent instead -->
<OldComponent />
</template>
@vize:docs
Comentário sobre documentação. Sem efeito de fiapos.
<template>
<!-- @vize:docs Primary action button for form submission -->
<button type="submit">Submit</button>
</template>
@vize:dev-only
Marque um nó para ser desmontado em builds de produção, mantido em desenvolvimento.
<template>
<!-- @vize:dev-only -->
<div class="debug-panel">{{ internalState }}</div>
</template>
Resumo
| Diretiva | Efeito | Gravidade |
|---|---|---|
@vize:expected |
Espere diagnóstico na próxima linha | — |
@vize:ignore-start/end |
Suprimir todos os diagnósticos na região | — |
@vize:level(...) |
Anular a severidade da próxima linha | — |
@vize:todo <msg> |
Emitir TODO | Aviso |
@vize:fixme <msg> |
Emit FIXME | Erro |
@vize:deprecated <msg> |
Emitir aviso de descontinuação | Aviso |
@vize:docs <text> |
Documentação (sem efeito de fiapo) | — |
@vize:dev-only |
Tira em produção | — |
Supressão de Script (@vize forget)
Usado dentro <script> como comentários do JS. Suprime avisos de análise cruzada (Croquis) na linha seguinte.
Sintaxe
<script setup>
// @vize forget: <reason>
<suppressed line>
</script>
É necessário um motivo — você deve explicar por que a supressão é necessária.
Exemplo
<script setup>
import { inject } from "vue";
// @vize forget: intentionally destructuring for one-time read
const { count } = inject("state");
</script>
Sem a anotação, o Vize alertaria que desestruturar um valor de retorno de inject() reativo quebra o rastreamento de reatividade.
Regras
| Governo | Descrição |
|---|---|
| Motivo necessário | // @vize forget sem motivo é um erro |
| Cólon necessário | Deve usar // @vize forget: <reason> (dois pontos antes do motivo) |
| Apenas a próxima linha | Aplica-se à próxima linha sem comentário, não vazia |
| Sem órfãos | Uma supressão no final de um arquivo sem código após ele é um erro |
Supressões Múltiplas
Cada @vize forget se aplica independentemente à próxima linha de código:
<script setup>
import { inject } from "vue";
// @vize forget: one-time read for display name
const { name } = inject("user");
// @vize forget: static config value
const { theme } = inject("config");
</script>
Pulando Comentários
A supressão mira a próxima linha de código , pulando comentários e linhas em branco:
<script setup>
// @vize forget: read-only access
// This comment is skipped
const { count } = inject("state");
</script>
Razões Comuns
| Motivo | Quando usar |
|---|---|
intentionally non-reactive |
O valor não precisa ser reativo |
read-only access |
Apenas lendo, não acompanhando as mudanças |
legacy code |
Problema conhecido, vou refatorar depois |
third-party integration |
Exigido pela biblioteca externa |
Exemplos inválidos
// @vize forget
const { count } = inject("state");
// ^ Error: requires a reason
// @vize forget because I said so
const { count } = inject("state");
// ^ Error: requires a colon before the reason
// @vize forget:
const { count } = inject("state");
// ^ Error: reason cannot be empty