Vize

コメントの注釈

Vize は、リンティング、診断、コード生成の動作を制御するためのコメントベースのアノテーションを提供します。使用される場所に応じて 2 つの注釈システムがあります。

  • <!-- @vize:xxx --><template> の HTML コメント (Patina リンター ディレクティブ)

  • // @vize forget: reason<script> の JS コメント (ファイル間分析の抑制)

すべての @vize: テンプレート ディレクティブはビルド出力から削除され、実稼働コードには決して表示されません。

テンプレート ディレクティブ (@vize:)

<template> 内で HTML コメントとして使用されます。これらは Patina (組み込みリンター) の動作を制御します。

@vize:expected

次の行で診断が行われることを期待してください。診断が生成されない場合、これは何も行われません。 @ts-expect-error に似ています。

<template>
  <ul>
    <!-- @vize:expected -->
    <li v-for="item in items">{{ item }}</li>
  </ul>
</template>

@vize:ignore-start / @vize:ignore-end

領域内のすべての診断を抑制します。

<template>
  <!-- @vize:ignore-start -->
  <ul>
    <li v-for="item in items">{{ item }}</li>
  </ul>
  <!-- @vize:ignore-end -->
</template>

@vize:level(warn|error|off)

次の行で診断の重大度をオーバーライドします。

<template>
  <!-- @vize:level(warn) -->
  <img src="/photo.png" />

  <!-- @vize:level(off) -->
  <li v-for="item in items">{{ item }}</li>
</template>
効果
warn 警告に格下げ
error エラーにアップグレード
off 完全に抑制

@vize:todo

TODO 警告を発行します。

<template>
  <!-- @vize:todo add loading state -->
  <div>{{ data }}</div>
</template>

@vize:fixme

FIXME エラーを発行します。

<template>
  <!-- @vize:fixme broken on mobile -->
  <div class="layout">...</div>
</template>

@vize:deprecated

非推奨の警告を発します。

<template>
  <!-- @vize:deprecated use NewComponent instead -->
  <OldComponent />
</template>

@vize:docs

ドキュメントのコメント。糸くずの影響はありません。

<template>
  <!-- @vize:docs Primary action button for form submission -->
  <button type="submit">Submit</button>
</template>

@vize:dev-only

運用ビルドで削除され、開発中に保持されるノードをマークします。

<template>
  <!-- @vize:dev-only -->
  <div class="debug-panel">{{ internalState }}</div>
</template>

まとめ

ディレクティブ 効果 重大度
@vize:expected 次の行に診断が表示されることが予想されます
@vize:ignore-start/end リージョン内のすべての診断を抑制します
@vize:level(...) 次の行の重大度を上書きする
@vize:todo <msg> TODOを送信する 警告
@vize:fixme <msg> FIXMEを発行する エラー
@vize:deprecated <msg> 非推奨の通知を発行する 警告
@vize:docs <text> ドキュメント (糸くずの影響なし)
@vize:dev-only 生産中のストリップ

スクリプト抑制 (@vize forget)

<script> 内で JS コメントとして使用されます。次の行のファイル間分析の警告 (クロッキー) を抑制します。

構文

<script setup>
// @vize forget: <reason>
<suppressed line>
</script>
  • *理由が必要です**— 抑制が必要な理由を説明する必要があります。

<script setup>
import { inject } from "vue";

// @vize forget: intentionally destructuring for one-time read
const { count } = inject("state");
</script>

アノテーションがないと、Vize はリアクティブな inject() 戻り値を構造化するとリアクティブの追跡が中断されると警告します。

ルール

ルール 説明
必要な理由 理由のない // @vize forget はエラーです。
コロンは必須 // @vize forget: <reason> (理由の前にコロン) を使用する必要があります。
次の行のみ 次のコメントではない、空ではない行に適用されます。
孤児はいない エラー後のコードのないファイルの末尾の抑制。

複数の抑制

@vize forget は次のコード行に独立して適用されます。

<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>

コメントをスキップする

抑制の対象は次のcode行で、コメントと空白行はスキップされます。

<script setup>
// @vize forget: read-only access
// This comment is skipped
const { count } = inject("state");
</script>

一般的な理由

理由 いつ使用するか
intentionally non-reactive 値はリアクティブである必要はありません。
read-only access 読み取りのみで、変更は追跡しません。
legacy code 既知の問題。後でリファクタリングします。
third-party integration 外部ライブラリで必要

無効な例

// @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