全 lint ルール
ルールの目的、既定の設定、所属するカテゴリを探すための一覧です。説明・設定・完全な悪い例と良い例・現在の対応範囲は、各カテゴリのページで確認できます。この一覧の既存のルール・例へのリンクも引き続き使用できます。
Vite+ では @vizejs/vite-plugin/vite-plus の defineConfig を使い、vue.linter.rules に指定します。vp run lint で Vize と Oxlint の lint を実行します。
既定の重大度は実装で定められた値です。プロジェクトでは off / warn / error に変更できます。オプションはルールのオプション、複数ファイルの検査はファイル間ルールを参照してください。
プリセット欄が「none」のルールは、明示的な有効化または追加の設定が必要です。
ESLint からのルール移行対応表で対応名と未実装の範囲を確認できます。
単一ファイルのルール (266)
| ルール | 例 | 重大度 | プリセット | 自動修正 | オプション | 実装 | 目的 | カテゴリ |
|---|---|---|---|---|---|---|---|---|
petite-vue/no-unsupported-directive |
悪い例 · 良い例 | error |
none | なし | なし | source | petite-vue が対応しないディレクティブを検出します。 | Essential |
petite-vue/valid-v-effect |
悪い例 · 良い例 | error |
none | なし | なし | source | v-effect に空でない式を指定します。 | Essential |
petite-vue/valid-v-scope |
悪い例 · 良い例 | error |
none | なし | なし | source | v-scope に値を指定する場合は、オブジェクトリテラルにします。 | Essential |
vue/multi-word-component-names |
悪い例 · 良い例 | error |
essential, nuxt, opinionated |
なし | なし | source | コンポーネント名を複数の単語で構成します。 | Essential |
vue/no-child-content |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-html / v-text と子コンテンツを同時に指定する箇所を検出します。 | Essential |
vue/no-deprecated-filter |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | Vue 2 のパイプによるフィルター構文を検出します。 | Essential |
vue/no-deprecated-functional-template |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | SFC の template で削除済みの functional 属性を検出します。 | Essential |
vue/no-deprecated-html-element-is |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 通常の HTML 要素で旧形式の is を使う箇所を検出します。 | Essential |
vue/no-deprecated-inline-template |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 削除済みの inline-template 属性を検出します。 | Essential |
vue/no-deprecated-router-link-tag-prop |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | router-link の削除済み tag prop を検出します。 | Essential |
vue/no-deprecated-scope-attribute |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | template の削除済み scope 属性を検出します。 | Essential |
vue/no-deprecated-slot-attribute |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 削除済みの slot 属性を検出します。 | Essential |
vue/no-deprecated-slot-scope-attribute |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 削除済みの slot-scope 属性を検出します。 | Essential |
vue/no-deprecated-v-bind-sync |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 削除済みの v-bind の .sync 修飾子を検出します。 | Essential |
vue/no-deprecated-v-is |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 非推奨の v-is ディレクティブを検出します。 | Essential |
vue/no-deprecated-v-on-native-modifier |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 削除済みの v-on の .native 修飾子を検出します。 | Essential |
vue/no-deprecated-v-on-number-modifiers |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
あり | なし | source | v-on の削除済みの数値 keyCode 修飾子を検出します。 | Essential |
vue/no-dupe-v-else-if |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-if / v-else-if の条件重複を検出します。 | Essential |
vue/no-duplicate-attributes |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 同じ要素の属性重複を検出します。 | Essential |
vue/no-multiple-template-root |
悪い例 · 良い例 | error |
none | なし | なし | source | 単一ルートを要求するテンプレートで複数ルートを検出します。 | Essential |
vue/no-mutating-props |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | ruleOptions |
source | 親から受け取った prop を子コンポーネントで変更する箇所を検出します。 | Essential |
vue/no-reserved-component-names |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 予約済みのコンポーネント名を検出します。 | Essential |
vue/no-template-key |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-for 用ではない template の key 指定を検出します。 | Essential |
vue/no-textarea-mustache |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | textarea 内の mustache を検出し、v-model の使用を勧めます。 | Essential |
vue/no-unused-components |
悪い例 · 良い例 | warning |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 登録しているのにテンプレートで使わないコンポーネントを検出します。 | Essential |
vue/no-unused-vars |
悪い例 · 良い例 | warning |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-for / v-slot に宣言しているのに使わない変数を検出します。 | Essential |
vue/no-use-v-if-with-v-for |
悪い例 · 良い例 | warning |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 同じ要素での v-if と v-for の併用を検出します。 | Essential |
vue/no-useless-template-attributes |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | template 要素の効果がない属性を検出します。 | Essential |
vue/no-v-for-template-key-on-child |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | template v-for の key を子ではなく template に指定します。 | Essential |
vue/no-v-html |
悪い例 · 良い例 | warning |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | XSS を防ぐため、v-html を使用した箇所に警告を出します。 | Essential |
vue/no-v-text-v-html-on-component |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | コンポーネントでの v-text / v-html を検出します。 | Essential |
vue/permitted-contents |
悪い例 · 良い例 | error |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | HTML の要素ごとのコンテンツモデルを検査します。 | Essential |
vue/require-component-is |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 動的 component 要素に :is を指定します。 | Essential |
vue/require-toggle-inside-transition |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | transition の子要素に表示を切り替える条件を指定します。 | Essential |
vue/require-v-for-key |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-for に安定した :key を指定します。 | Essential |
vue/use-v-on-exact |
悪い例 · 良い例 | warning |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 修飾子付きのイベント操作と競合するハンドラーに .exact を指定します。 | Essential |
vue/valid-attribute-name |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 有効な属性名を指定します。 | Essential |
vue/valid-template-root |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | Vue 3 のフラグメントに対応する有効なテンプレートルートを検査します。 | Essential |
vue/valid-v-bind |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-bind の引数・値・修飾子を検査します。 | Essential |
vue/valid-v-cloak |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-cloak の引数・値・修飾子を検査します。 | Essential |
vue/valid-v-else |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
あり | なし | source | v-else の位置・引数・値を検査します。 | Essential |
vue/valid-v-else-if |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-else-if の位置・引数・値を検査します。 | Essential |
vue/valid-v-for |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-for の式と変数宣言を検査します。 | Essential |
vue/valid-v-html |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-html の値・引数・修飾子を検査します。 | Essential |
vue/valid-v-if |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-if に有効な条件式を指定します。 | Essential |
vue/valid-v-is |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-is の適用先・引数・値を検査します。 | Essential |
vue/valid-v-memo |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-memo の値を配列の式にします。 | Essential |
vue/valid-v-model |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-model の値・引数・修飾子を検査します。 | Essential |
vue/valid-v-on |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | ruleOptions |
source | v-on のイベント名・式・修飾子を検査します。 | Essential |
vue/valid-v-once |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-once の引数・値・修飾子を検査します。 | Essential |
vue/valid-v-pre |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-pre の引数・値・修飾子を検査します。 | Essential |
vue/valid-v-show |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-show に有効な条件式を指定します。 | Essential |
vue/valid-v-slot |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | ruleOptions |
source | v-slot の適用先・宣言・修飾子を検査します。 | Essential |
vue/valid-v-text |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | v-text の値・引数・修飾子を検査します。 | Essential |
vue/attribute-hyphenation |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
あり | ruleOptions |
source | コンポーネントの prop 属性名を設定した形式に揃えます。 | Strongly Recommended |
vue/component-definition-name-casing |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | コンポーネント定義名を PascalCase または kebab-case に揃えます。 | Strongly Recommended |
vue/html-quotes |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
あり | ruleOptions |
source | HTML 属性値の引用符を揃えます。 | Strongly Recommended |
vue/html-self-closing |
悪い例 · 良い例 | warning |
nuxt, opinionated |
あり | ruleOptions |
source | 要素の種類ごとに自己終了タグの形式を揃えます。 | Strongly Recommended |
vue/mustache-interpolation-spacing |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
あり | ruleOptions |
source | mustache 内の空白を揃えます。 | Strongly Recommended |
vue/no-multi-spaces |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
あり | なし | source | 連続する不要な空白を検出します。 | Strongly Recommended |
vue/no-template-shadow |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | テンプレート変数が外側の名前を隠す箇所を検出します。 | Strongly Recommended |
vue/no-unused-properties |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | defineProps に宣言しているのに使わない prop を検出します。 | Strongly Recommended |
vue/prop-name-casing |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 宣言する prop 名の形式を揃えます。 | Strongly Recommended |
vue/v-bind-style |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
あり | ruleOptions |
source | v-bind の表記形式を揃えます。 | Strongly Recommended |
vue/v-on-style |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
あり | ruleOptions |
source | v-on の表記形式を揃えます。 | Strongly Recommended |
vue/v-slot-style |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
あり | ruleOptions |
source | v-slot の表記形式を揃えます。 | Strongly Recommended |
ssr/no-browser-globals-in-ssr |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | SSR で実行されるコードのブラウザー専用グローバル参照を検出します。 | Recommended |
ssr/no-hydration-mismatch |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | サーバーとクライアントで一致しないテンプレート値を検出します。 | Recommended |
vue/a11y-img-alt |
悪い例 · 良い例 | warning |
none | なし | なし | source | 画像に代替テキストの alt 属性を指定します。 | Recommended |
vue/attribute-order |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | テンプレートの属性を一定の順に並べます。 | Recommended |
vue/component-name-in-template-casing |
悪い例 · 良い例 | warning |
nuxt, opinionated |
あり | ruleOptions |
source | テンプレート内のコンポーネント名を指定した形式に揃えます。 | Recommended |
vue/html-button-has-type |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | button に有効な type を明示します。 | Recommended |
vue/max-template-complexity |
悪い例 · 良い例 | warning |
none | なし | なし | source | コンポーネント自身のテンプレートの複雑度を制限します。 | Recommended |
vue/no-array-index-key |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | v-for の配列インデックスをそのまま key に使う箇所を検出します。 | Recommended |
vue/no-bare-strings-in-template |
悪い例 · 良い例 | warning |
none | なし | なし | source | テンプレートに直接書かれた、国際化の対象となるテキストを検出します。 | Recommended |
vue/no-boolean-attr-value |
悪い例 · 良い例 | warning |
nuxt, opinionated |
あり | なし | source | HTML の真偽属性に不要な値を指定した箇所を検出します。 | Recommended |
vue/no-empty-component-block |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | 空の SFC ブロックを検出します。 | Recommended |
vue/no-inline-style |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | インラインの style 属性を検出します。 | Recommended |
vue/no-invalid-html-attribute |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 静的 HTML 属性の無効な値を検出します。現在は rel が対象です。 | Recommended |
vue/no-lone-template |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 不要な template 要素を検出します。 | Recommended |
vue/no-multiple-objects-in-class |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | :class 配列内の複数のオブジェクト指定をまとめます。 | Recommended |
vue/no-negated-v-if-condition |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | v-else がある条件分岐の否定条件を反転して読みやすくします。 | Recommended |
vue/no-non-component-keep-alive-child |
悪い例 · 良い例 | warning |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | KeepAlive の直下に通常の HTML 要素を置く箇所を検出します。 | Recommended |
vue/no-preprocessor-lang |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | CSS プリプロセッサーより標準の CSS を使う方針を示します。 | Recommended |
vue/no-root-v-if |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | テンプレートの単一ルートに v-if を指定する箇所を検出します。 | Recommended |
vue/no-script-non-standard-lang |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | script の非標準の lang 指定を避ける方針を示します。 | Recommended |
vue/no-src-attribute |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | SFC ブロックの外部 src 指定を検出します。 | Recommended |
vue/no-static-inline-styles |
悪い例 · 良い例 | warning |
none | なし | なし | source | 静的なインライン style 属性を検出します。 | Recommended |
vue/no-template-lang |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | template の lang 指定を避ける方針を示します。 | Recommended |
vue/no-template-target-blank |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | target=_blank の外部リンクに適切な rel を指定します。 | Recommended |
vue/no-undefined-refs |
悪い例 · 良い例 | warning |
none | なし | なし | source | テンプレート内の未定義変数参照を検出します。 | Recommended |
vue/no-unsafe-url |
悪い例 · 良い例 | warning |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 危険なスキームを含む可能性がある URL 属性やバインディングを検出します。 | Recommended |
vue/no-unsandboxed-iframe |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | iframe に sandbox 属性を指定します。 | Recommended |
vue/no-unused-refs |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | テンプレートに宣言しているのに参照しない ref を検出します。 | Recommended |
vue/no-unused-setup-bindings |
悪い例 · 良い例 | warning |
none | なし | なし | source | script setup に宣言しているのに読み取らない変数を検出します。 | Recommended |
vue/no-use-v-else-with-v-for |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 同じ要素での v-else / v-else-if と v-for の併用を検出します。 | Recommended |
vue/no-useless-mustaches |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | 文字列リテラルだけの不要な mustache を検出します。 | Recommended |
vue/no-useless-v-bind |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | 文字列リテラルだけの不要な v-bind を検出します。 | Recommended |
vue/no-v-text |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | v-text の代わりに mustache を使う方針を適用します。 | Recommended |
vue/prefer-props-shorthand |
悪い例 · 良い例 | warning |
nuxt, opinionated |
あり | なし | source | Vue 3.4 の同名 prop バインディングの省略形を使います。 | Recommended |
vue/prefer-true-attribute-shorthand |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | true を指定するバインディングを真偽属性の省略形にします。 | Recommended |
vue/require-component-registration |
悪い例 · 良い例 | warning |
opinionated |
なし | ruleOptions |
source | 使用するコンポーネントを import または登録します。 | Recommended |
vue/require-scoped-style |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | style に scoped を指定する方針を適用します。 | Recommended |
vue/scoped-event-names |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | イベント名を context:event の形式に揃えます。 | Recommended |
vue/sfc-element-order |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | ruleOptions |
source | SFC のトップレベルブロックを設定した順に並べます。 | Recommended |
vue/single-style-block |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | SFC の style を一つのブロックにまとめます。 | Recommended |
vue/slot-name-casing |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | 名前付きスロットを kebab-case に揃えます。 | Recommended |
vue/this-in-template |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | テンプレートで不要な this. 参照を検出します。 | Recommended |
vue/v-on-event-hyphenation |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | ruleOptions |
source | コンポーネントのカスタムイベント名を設定した形式に揃えます。 | Recommended |
vue/v-on-handler-style |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | イベントハンドラーの書き方を参照または関数の形式に揃えます。 | Recommended |
vue/warn-custom-block |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | SFC のカスタムブロックを検出します。 | Recommended |
vue/warn-custom-directive |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | 登録が必要なカスタムディレクティブを検出します。 | Recommended |
a11y/alt-text |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 画像などのメディアに代替テキストを用意します。 | Accessibility |
a11y/anchor-has-content |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | リンクに支援技術で読める内容を用意します。 | Accessibility |
a11y/anchor-is-valid |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | リンクの href に有効な移動先を指定します。 | Accessibility |
a11y/aria-props |
悪い例 · 良い例 | error |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 存在しない ARIA 属性を検出します。 | Accessibility |
a11y/aria-role |
悪い例 · 良い例 | error |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 抽象ロールを除く、有効な ARIA role を指定します。 | Accessibility |
a11y/aria-unsupported-elements |
悪い例 · 良い例 | error |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | ARIA 属性を使用できない要素への指定を検出します。 | Accessibility |
a11y/click-events-have-key-events |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | クリックで操作する要素にキーボード操作も用意します。 | Accessibility |
a11y/form-control-has-label |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | フォーム部品に関連付けられたラベルを用意します。 | Accessibility |
a11y/heading-has-content |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 見出しに支援技術で読める内容を用意します。 | Accessibility |
a11y/heading-levels |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | 見出しの階層を飛ばした指定を検出します。 | Accessibility |
a11y/iframe-has-title |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | iframe に内容を説明する title を指定します。 | Accessibility |
a11y/img-alt |
悪い例 · 良い例 | warning |
none | なし | なし | source | 画像に alt 属性を指定します。装飾画像は空の alt を使います。 | Accessibility |
a11y/interactive-supports-focus |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 操作可能な role の要素をフォーカス可能にします。 | Accessibility |
a11y/label-has-for |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | label を対象のフォーム部品と関連付けます。 | Accessibility |
a11y/landmark-roles |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | ランドマーク role の配置と重複を検査します。 | Accessibility |
a11y/media-has-caption |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 音声・動画に字幕を用意します。 | Accessibility |
a11y/mouse-events-have-key-events |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | マウス操作と対応する focus / blur 操作を用意します。 | Accessibility |
a11y/no-access-key |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 環境のショートカットと衝突し得る accesskey を検出します。 | Accessibility |
a11y/no-aria-hidden-on-focusable |
悪い例 · 良い例 | error |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | フォーカス可能な要素を aria-hidden で支援技術から隠す指定を検出します。 | Accessibility |
a11y/no-autofocus |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 意図せずフォーカスを移動させる autofocus を検出します。 | Accessibility |
a11y/no-distracting-elements |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | marquee や blink などの注意をそらす要素を検出します。 | Accessibility |
a11y/no-i-for-icon |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | アイコン用の i 要素を検出し、意味に合う要素を勧めます。 | Accessibility |
a11y/no-redundant-roles |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
あり | なし | source | 要素本来の意味と重複する ARIA role を検出します。 | Accessibility |
a11y/no-refer-to-non-existent-id |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 文書内に存在しない ID への参照を検出します。 | Accessibility |
a11y/no-role-presentation-on-focusable |
悪い例 · 良い例 | error |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | フォーカス可能な要素への role="presentation" または role="none" の指定を検出します。 | Accessibility |
a11y/no-static-element-interactions |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 操作部品ではない要素へのイベント指定を検出します。 | Accessibility |
a11y/placeholder-label-option |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | required の select を値が空のプレースホルダー option から始めます。 | Accessibility |
a11y/role-has-required-aria-props |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | ARIA role が必要とする属性を指定します。 | Accessibility |
a11y/tabindex-no-positive |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 通常のフォーカス順序を変える正の tabindex を検出します。 | Accessibility |
a11y/use-list |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | 箇条書きに見えるテキストをリスト要素で表現します。 | Accessibility |
vue/use-unique-element-ids |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | 静的 ID の代わりに useId() で一意な ID を生成します。 | Accessibility |
html/deprecated-attr |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 非推奨の HTML 属性を検出します。 | HTML Conformance |
html/deprecated-element |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 非推奨の HTML 要素を検出します。 | HTML Conformance |
html/id-duplication |
悪い例 · 良い例 | error |
essential, happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 同じテンプレート内の ID 重複を検出します。 | HTML Conformance |
html/no-consecutive-br |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 連続する br 要素による余白指定を検出します。 | HTML Conformance |
html/no-dupe-style-properties |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | 静的 style 属性内のプロパティ重複を検出します。 | HTML Conformance |
html/no-duplicate-class |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | 静的 class 属性内のクラス名重複を検出します。 | HTML Conformance |
html/no-duplicate-dt |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | dl 内の dt の名前重複を検出します。 | HTML Conformance |
html/no-empty-palpable-content |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | ruleOptions |
source | 可視コンテンツを期待する要素が空の場合に検出します。 | HTML Conformance |
html/require-datetime |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | time 要素に機械可読の datetime を指定します。 | HTML Conformance |
type/no-floating-promises |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | 処理しないまま放置された Promise を検出します。 | Type Aware |
type/no-reactivity-loss |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | リアクティブな値を代入や呼び出しで取り出し、元の更新に追従しないスナップショットになる箇所を検出します。 | Type Aware |
type/no-unsafe-template-binding |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | テンプレートで安全でない型の値を使用する箇所を検出します。 | Type Aware |
type/require-typed-emits |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | defineEmits に型定義を指定します。 | Type Aware |
type/require-typed-props |
悪い例 · 良い例 | warning |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | defineProps に型定義を指定します。 | Type Aware |
type/strict-boolean-expressions |
悪い例 · 良い例 | warning |
none | なし | ruleOptions |
source | script とテンプレートの条件式で安全な真偽判定を使います。 | Type Aware |
script/no-get-current-instance |
悪い例 · 良い例 | error |
opinionated |
なし | なし | source | Vapor で null を返す getCurrentInstance() を検出します。 | Vapor |
script/no-next-tick |
悪い例 · 良い例 | error |
none | なし | なし | source | Vapor 向けコンポーネントの nextTick() 使用を検出します。 | Vapor |
script/no-options-api |
悪い例 · 良い例 | error |
opinionated |
なし | なし | source | Vapor で Options API を使用する箇所を検出します。 | Vapor |
vapor/no-inline-template |
悪い例 · 良い例 | error |
nuxt, opinionated |
なし | なし | source | Vapor で削除済みの inline-template 属性を検出します。 | Vapor |
vapor/no-vue-lifecycle-events |
悪い例 · 良い例 | error |
happy-path, nuxt, ecosystem, opinionated |
なし | なし | source | Vapor では未対応の、要素ごとに指定する @vue:* ライフサイクルイベントを検出します。 | Vapor |
vapor/prefer-static-class |
悪い例 · 良い例 | warning |
nuxt, opinionated |
あり | なし | source | 文字列リテラルの :class を静的 class に置き換えます。 | Vapor |
vapor/require-vapor-attribute |
悪い例 · 良い例 | warning |
nuxt, opinionated |
なし | なし | source | Vapor 向けの script setup に vapor 属性を付ける規約を示します。 | Vapor |
ecosystem/nuxt-prefer-nuxt-link |
悪い例 · 良い例 | warning |
nuxt |
なし | なし | source | Nuxt の内部リンクに NuxtLink を使います。 | Ecosystem |
ecosystem/pinia-prefer-store-to-refs |
悪い例 · 良い例 | warning |
ecosystem |
なし | なし | source | Pinia store の分割代入に storeToRefs() を使います。 | Ecosystem |
ecosystem/router-link-require-to |
悪い例 · 良い例 | error |
ecosystem |
なし | なし | source | RouterLink / NuxtLink に to を指定します。 | Ecosystem |
ecosystem/void-link-require-href |
悪い例 · 良い例 | error |
ecosystem |
なし | なし | source | Void Vue の Link に href を指定します。 | Ecosystem |
ecosystem/void-link-valid-method |
悪い例 · 良い例 | warning |
ecosystem |
なし | なし | source | Void Vue の Link に有効な静的 method を指定します。 | Ecosystem |
ecosystem/vue-i18n-no-missing-key |
悪い例 · 良い例 | warning |
ecosystem |
なし | なし | source | SFC 内の翻訳データに存在しない静的キーを検出します。 | Ecosystem |
ecosystem/vue-router-prefer-named-link |
悪い例 · 良い例 | warning |
ecosystem |
なし | なし | source | RouterLink の文字列パスを名前付きルートの指定に置き換えます。 | Ecosystem |
ecosystem/vue-router-prefer-named-push |
悪い例 · 良い例 | warning |
ecosystem |
なし | なし | source | Vue Router のプログラムによる移動に名前付きルートを使います。 | Ecosystem |
ecosystem/vue-test-utils-no-html-snapshot |
悪い例 · 良い例 | warning |
ecosystem |
なし | なし | source | wrapper.html() 全体のスナップショットに依存するテストを検出します。 | Ecosystem |
css/no-display-none |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | 表示切り替えに display: none を使う箇所で v-show を検討します。 | CSS |
css/no-hardcoded-values |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | CSS に直接記述した値を CSS 変数にまとめます。 | CSS |
css/no-id-selectors |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | 詳細度が高い CSS の ID セレクターを検出します。 | CSS |
css/no-important |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | 通常のカスケードを上書きする !important を検出します。 | CSS |
css/no-utility-classes |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | コンポーネント内でユーティリティクラスを定義する箇所を検出します。 | CSS |
css/no-v-bind-performance |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | CSS v-bind() の実行時コストを検討するための警告です。 | CSS |
css/prefer-logical-properties |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | 書字方向に対応する CSS の論理プロパティを使います。 | CSS |
css/prefer-nested-selectors |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | 子孫セレクターを CSS のネスト構文でまとめます。 | CSS |
css/prefer-slotted |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | slot や子コンポーネントに対する scoped CSS のセレクターを検査します。 | CSS |
css/require-font-display |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | @font-face に font-display を指定します。 | CSS |
musea/no-empty-variant |
悪い例 · 良い例 | warning |
none | なし | なし | source | 内容のない variant ブロックを検出します。 | Musea |
musea/prefer-design-tokens |
悪い例 · 良い例 | warning |
none | なし | ruleOptions |
source | CSS に直接記述した値が登録済みのデザイントークンの値に一致する場合、対応する CSS 変数で表現します。 | Musea |
musea/require-component |
悪い例 · 良い例 | warning |
none | なし | なし | source | art ブロックに対象の component を指定します。 | Musea |
musea/require-title |
悪い例 · 良い例 | error |
none | なし | なし | source | art ブロックに title を指定します。 | Musea |
musea/unique-variant-names |
悪い例 · 良い例 | error |
none | なし | なし | source | 同じ Art ファイル内の variant 名を一意にします。 | Musea |
musea/valid-variant |
悪い例 · 良い例 | error |
none | なし | なし | source | variant ブロックに name を指定します。 | Musea |
script/component-options-name-casing |
悪い例 · 良い例 | error |
opinionated, nuxt |
なし | なし | source | コンポーネントの name オプションを PascalCase に揃えます。 | Script |
script/custom-event-name-casing |
悪い例 · 良い例 | error |
opinionated, nuxt |
なし | ruleOptions |
source | emit するカスタムイベント名を指定した形式に揃えます。 | Script |
script/define-emits-declaration |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | defineEmits を型による宣言形式に揃えます。 | Script |
script/define-macros-order |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | ruleOptions |
source | script setup のコンパイラーマクロを一定の順に宣言します。 | Script |
script/define-props-declaration |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | defineProps を型による宣言形式に揃えます。 | Script |
script/define-props-destructuring |
悪い例 · 良い例 | warning |
none | なし | ruleOptions |
source | defineProps の分割代入スタイルを指定した方針に揃えます。 | Script |
script/no-arrow-functions-in-watch |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Options API の watch ハンドラーにアロー関数を使う箇所を検出します。 | Script |
script/no-async-in-computed |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | computed の getter で非同期関数を使う箇所を検出します。 | Script |
script/no-boolean-default |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | Boolean prop の冗長な default を検出します。 | Script |
script/no-computed-properties-in-data |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | 初期化前の data() で算出プロパティを読む箇所を検出します。 | Script |
script/no-deep-destructure-in-props |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | defineProps の深い分割代入を検出します。 | Script |
script/no-deprecated-data-object-declaration |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Vue 3 で関数にすべき data オプションのオブジェクト指定を検出します。 | Script |
script/no-deprecated-delete-set |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Vue 3 で削除された $set / $delete を検出します。 | Script |
script/no-deprecated-destroyed-lifecycle |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
あり | なし | source | Vue 2 の destroyed / beforeDestroy を検出し、Vue 3 のライフサイクルフックに置き換えます。 | Script |
script/no-deprecated-dollar-listeners-api |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Vue 3 で $attrs に統合された $listeners を検出します。 | Script |
script/no-deprecated-dollar-scopedslots-api |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Vue 3 で $slots に統合された $scopedSlots を検出します。 | Script |
script/no-deprecated-events-api |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Vue 3 で削除された $on / $off / $once を検出します。 | Script |
script/no-deprecated-model-definition |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Vue 3 で削除された model オプションを検出します。 | Script |
script/no-deprecated-props-default-this |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | prop の default / validator 内で使えなくなった this を検出します。 | Script |
script/no-deprecated-vue-config-keycodes |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | 削除された Vue.config.keyCodes を検出します。 | Script |
script/no-dupe-keys |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Options API の props / data / computed などのキー重複を検出します。 | Script |
script/no-duplicate-attr-inheritance |
悪い例 · 良い例 | warning |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | fallthrough 属性を同じコンポーネントで二重に適用する箇所を検出します。 | Script |
script/no-export-in-script-setup |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | script setup 内の export 文を検出します。 | Script |
script/no-expose-after-await |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | await の後の expose() と defineExpose() を禁止します。 | Script |
script/no-import-compiler-macros |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | 自動的に使える Vue コンパイラーマクロの import を検出します。 | Script |
script/no-internal-imports |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Vue 内部モジュールからの import を検出します。 | Script |
script/no-lifecycle-after-await |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | setup() 内で await の後にライフサイクルフックを登録することを禁止します。 | Script |
script/no-multiple-slot-args |
悪い例 · 良い例 | warning |
happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | scoped slot 関数に複数の引数を渡す箇所を検出します。 | Script |
script/no-potential-component-option-typo |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Options API のオプション名の入力ミスを検出します。 | Script |
script/no-reactive-destructure |
悪い例 · 良い例 | warning |
none | なし | なし | source | reactive オブジェクトを分割代入し、リアクティビティを失う箇所を検出します。 | Script |
script/no-ref-as-operand |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | ref を演算の値として使う際に .value を参照します。 | Script |
script/no-required-prop-with-default |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | required: true と default を同時に持つ prop を検出します。 | Script |
script/no-reserved-identifiers |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Vue コンパイラーが予約した識別子の宣言を検出します。 | Script |
script/no-reserved-keys |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Options API のキーに Vue の予約名を使う箇所を検出します。 | Script |
script/no-reserved-props |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | prop 宣言に Vue の予約名を使う箇所を検出します。 | Script |
script/no-restricted-globals |
悪い例 · 良い例 | error |
none | なし | ruleOptions |
source | 設定で禁止した実行環境のグローバル参照を検出します。 | Script |
script/no-restricted-members |
悪い例 · 良い例 | error |
none | なし | ruleOptions |
source | 設定で禁止した object.property へのアクセスを検出します。 | Script |
script/no-side-effects-in-computed-properties |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Options API の computed getter 内の副作用を検出します。 | Script |
script/no-top-level-ref-in-script |
悪い例 · 良い例 | error |
none | なし | なし | source | 通常の script のトップレベルで、リクエスト間に共有される状態を作る箇所を検出します。 | Script |
script/no-unstable-nested-components |
悪い例 · 良い例 | warning |
happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | setup / render 内で毎回コンポーネントを定義する箇所を検出します。 | Script |
script/no-unused-emit-declarations |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | 宣言したまま emit していないイベントを検出します。 | Script |
script/no-use-computed-property-like-method |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Options API の computed プロパティをメソッドとして呼ぶ箇所を検出します。 | Script |
script/no-watch-after-await |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | setup() 内で await の後に停止ハンドルを保持せずにウォッチャーを登録することを禁止します。 | Script |
script/no-with-defaults |
悪い例 · 良い例 | warning |
opinionated |
なし | なし | source | Vue 3.5 以降の props 分割代入の既定値を勧めます。 | Script |
script/one-component-per-file |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | 1 ファイルにコンポーネント定義が複数あることを検出します。 | Script |
script/order-in-components |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | コンポーネントオプションのプロパティ順を既定の並びに揃えます。 | Script |
script/prefer-computed |
悪い例 · 良い例 | warning |
none | なし | なし | source | 他の状態から導ける値を watcher で同期する代わりに computed で表現します。 | Script |
script/prefer-define-options |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | name / inheritAttrs だけの通常 script を defineOptions() にまとめます。 | Script |
script/prefer-import-from-vue |
悪い例 · 良い例 | warning |
essential, happy-path, ecosystem, nuxt, opinionated |
あり | なし | source | 内部パッケージではなく vue から import します。 | Script |
script/prefer-ref-over-reactive |
悪い例 · 良い例 | warning |
none | なし | なし | source | 状態管理に reactive() より ref() を使う方針を適用します。 | Script |
script/prefer-use-attrs |
悪い例 · 良い例 | warning |
none | なし | なし | source | setup の context.attrs を useAttrs() に置き換えます。 | Script |
script/prefer-use-id |
悪い例 · 良い例 | warning |
none | なし | なし | source | 一意な ID の生成に Vue 3.5 の useId() を使います。 | Script |
script/prefer-use-slots |
悪い例 · 良い例 | warning |
none | なし | なし | source | setup の context.slots を useSlots() に置き換えます。 | Script |
script/prefer-use-template-ref |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | テンプレート参照に Vue 3.5 の useTemplateRef() を使います。 | Script |
script/require-default-prop |
悪い例 · 良い例 | error |
opinionated, nuxt |
なし | なし | source | 省略可能な、Boolean 以外の prop に default を用意します。 | Script |
script/require-explicit-emits |
悪い例 · 良い例 | warning |
happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | emit するイベントを defineEmits または emits に宣言します。 | Script |
script/require-explicit-slots |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | useSlots() で使う slot を defineSlots の型で宣言します。 | Script |
script/require-function-return-type |
悪い例 · 良い例 | warning |
none | なし | なし | source | 関数に戻り値の型注釈を指定します。 | Script |
script/require-prop-type-constructor |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | prop の type に文字列ではなくコンストラクターを指定します。 | Script |
script/require-prop-types |
悪い例 · 良い例 | error |
opinionated |
なし | なし | source | 各 prop の型を宣言します。 | Script |
script/require-render-return |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | render 関数が値を返すことを必須にします。 | Script |
script/require-slots-as-functions |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Vue 3 の $slots プロパティを関数として呼び出します。 | Script |
script/require-symbol-provide |
悪い例 · 良い例 | warning |
none | なし | なし | source | provide / inject のキーに衝突しにくい Symbol を使います。 | Script |
script/require-typed-object-prop |
悪い例 · 良い例 | warning |
opinionated, nuxt |
なし | なし | source | Object / Array の prop に具体的な型を指定します。 | Script |
script/require-typed-ref |
悪い例 · 良い例 | warning |
none | なし | なし | source | 引数なし、null、undefined で呼び出す ref() に型引数を指定します。 | Script |
script/require-valid-default-prop |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | prop の default を宣言した型に合う値にします。 | Script |
script/return-in-computed-property |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | computed の getter に値を返す return を用意します。 | Script |
script/return-in-emits-validator |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | Options API の emits validator に戻り値を用意します。 | Script |
script/valid-define-emits |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | defineEmits の重複や型と実行時引数の併用を検出します。 | Script |
script/valid-define-options |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | defineOptions の引数と使用回数を検査します。 | Script |
script/valid-define-props |
悪い例 · 良い例 | error |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | defineProps の重複や型と実行時引数の併用を検出します。 | Script |
script/valid-next-tick |
悪い例 · 良い例 | warning |
essential, happy-path, ecosystem, nuxt, opinionated |
なし | なし | source | nextTick() の完了を await、then、またはコールバックで扱います。 | Script |
nuxt/no-nuxt-config-test-key |
悪い例 · 良い例 | error |
nuxt |
なし | なし | source | Nuxt 設定の test キーに旧形式の真偽値を指定する箇所を検出します。 | Nuxt |
nuxt/no-page-meta-runtime-values |
悪い例 · 良い例 | error |
nuxt |
なし | なし | source | definePageMeta の即時評価部分で実行時コンテキストを使う箇所を検出します。 | Nuxt |
nuxt/nuxt-config-keys-order |
悪い例 · 良い例 | error |
nuxt |
あり | なし | source | Nuxt 設定のプロパティを推奨順に並べます。 | Nuxt |
nuxt/prefer-import-meta |
悪い例 · 良い例 | error |
nuxt |
あり | なし | source | Nuxt の環境フラグを process.* から import.meta.* に置き換えます。 | Nuxt |
プロジェクトのルールと解析器の診断契約 (66)
以下の項目は、上の 266 件の単一ファイルのルールを補足します。それぞれの例には、コンポーネントやプロジェクトの構成、または参照を追跡するグラフの具体的な条件が含まれます。CLI の検査、実験的なライブラリーの生成元、生成元のない診断契約では対応範囲が異なります。ファイル間検査の概要を確認してください。
単一ファイルの例
petite-vue/no-unsupported-directive
petite-vue が対応しないディレクティブを検出します。
petite-vue/valid-v-effect
v-effect に空でない式を指定します。
petite-vue/valid-v-scope
v-scope に値を指定する場合は、オブジェクトリテラルにします。
vue/multi-word-component-names
コンポーネント名を複数の単語で構成します。
vue/no-child-content
v-html / v-text と子コンテンツを同時に指定する箇所を検出します。
vue/no-deprecated-filter
Vue 2 のパイプによるフィルター構文を検出します。
vue/no-deprecated-functional-template
SFC の template で削除済みの functional 属性を検出します。
vue/no-deprecated-html-element-is
通常の HTML 要素で旧形式の is を使う箇所を検出します。
vue/no-deprecated-inline-template
削除済みの inline-template 属性を検出します。
vue/no-deprecated-router-link-tag-prop
router-link の削除済み tag prop を検出します。
vue/no-deprecated-scope-attribute
template の削除済み scope 属性を検出します。
vue/no-deprecated-slot-attribute
削除済みの slot 属性を検出します。
vue/no-deprecated-slot-scope-attribute
削除済みの slot-scope 属性を検出します。
vue/no-deprecated-v-bind-sync
削除済みの v-bind の .sync 修飾子を検出します。
vue/no-deprecated-v-is
非推奨の v-is ディレクティブを検出します。
vue/no-deprecated-v-on-native-modifier
削除済みの v-on の .native 修飾子を検出します。
vue/no-deprecated-v-on-number-modifiers
v-on の削除済みの数値 keyCode 修飾子を検出します。
vue/no-dupe-v-else-if
v-if / v-else-if の条件重複を検出します。
vue/no-duplicate-attributes
同じ要素の属性重複を検出します。
vue/no-multiple-template-root
単一ルートを要求するテンプレートで複数ルートを検出します。
vue/no-mutating-props
親から受け取った prop を子コンポーネントで変更する箇所を検出します。
vue/no-reserved-component-names
予約済みのコンポーネント名を検出します。
vue/no-template-key
v-for 用ではない template の key 指定を検出します。
vue/no-textarea-mustache
textarea 内の mustache を検出し、v-model の使用を勧めます。
vue/no-unused-components
登録しているのにテンプレートで使わないコンポーネントを検出します。
vue/no-unused-vars
v-for / v-slot に宣言しているのに使わない変数を検出します。
vue/no-use-v-if-with-v-for
同じ要素での v-if と v-for の併用を検出します。
vue/no-useless-template-attributes
template 要素の効果がない属性を検出します。
vue/no-v-for-template-key-on-child
template v-for の key を子ではなく template に指定します。
vue/no-v-html
XSS を防ぐため、v-html を使用した箇所に警告を出します。
vue/no-v-text-v-html-on-component
コンポーネントでの v-text / v-html を検出します。
vue/permitted-contents
HTML の要素ごとのコンテンツモデルを検査します。
vue/require-component-is
動的 component 要素に :is を指定します。
vue/require-toggle-inside-transition
transition の子要素に表示を切り替える条件を指定します。
vue/require-v-for-key
v-for に安定した :key を指定します。
vue/use-v-on-exact
修飾子付きのイベント操作と競合するハンドラーに .exact を指定します。
vue/valid-attribute-name
有効な属性名を指定します。
vue/valid-template-root
Vue 3 のフラグメントに対応する有効なテンプレートルートを検査します。
vue/valid-v-bind
v-bind の引数・値・修飾子を検査します。
vue/valid-v-cloak
v-cloak の引数・値・修飾子を検査します。
vue/valid-v-else
v-else の位置・引数・値を検査します。
vue/valid-v-else-if
v-else-if の位置・引数・値を検査します。
vue/valid-v-for
v-for の式と変数宣言を検査します。
vue/valid-v-html
v-html の値・引数・修飾子を検査します。
vue/valid-v-if
v-if に有効な条件式を指定します。
vue/valid-v-is
v-is の適用先・引数・値を検査します。
vue/valid-v-memo
v-memo の値を配列の式にします。
vue/valid-v-model
v-model の値・引数・修飾子を検査します。
vue/valid-v-on
v-on のイベント名・式・修飾子を検査します。
vue/valid-v-once
v-once の引数・値・修飾子を検査します。
vue/valid-v-pre
v-pre の引数・値・修飾子を検査します。
vue/valid-v-show
v-show に有効な条件式を指定します。
vue/valid-v-slot
v-slot の適用先・宣言・修飾子を検査します。
vue/valid-v-text
v-text の値・引数・修飾子を検査します。
vue/attribute-hyphenation
コンポーネントの prop 属性名を設定した形式に揃えます。
vue/component-definition-name-casing
コンポーネント定義名を PascalCase または kebab-case に揃えます。
vue/html-quotes
HTML 属性値の引用符を揃えます。
vue/html-self-closing
要素の種類ごとに自己終了タグの形式を揃えます。
vue/mustache-interpolation-spacing
mustache 内の空白を揃えます。
vue/no-multi-spaces
連続する不要な空白を検出します。
vue/no-template-shadow
テンプレート変数が外側の名前を隠す箇所を検出します。
vue/no-unused-properties
defineProps に宣言しているのに使わない prop を検出します。
vue/prop-name-casing
宣言する prop 名の形式を揃えます。
vue/v-bind-style
v-bind の表記形式を揃えます。
vue/v-on-style
v-on の表記形式を揃えます。
vue/v-slot-style
v-slot の表記形式を揃えます。
ssr/no-browser-globals-in-ssr
SSR で実行されるコードのブラウザー専用グローバル参照を検出します。
ssr/no-hydration-mismatch
サーバーとクライアントで一致しないテンプレート値を検出します。
vue/a11y-img-alt
画像に代替テキストの alt 属性を指定します。
vue/attribute-order
テンプレートの属性を一定の順に並べます。
vue/component-name-in-template-casing
テンプレート内のコンポーネント名を指定した形式に揃えます。
vue/html-button-has-type
button に有効な type を明示します。
vue/max-template-complexity
コンポーネント自身のテンプレートの複雑度を制限します。
vue/no-array-index-key
v-for の配列インデックスをそのまま key に使う箇所を検出します。
vue/no-bare-strings-in-template
テンプレートに直接書かれた、国際化の対象となるテキストを検出します。
vue/no-boolean-attr-value
HTML の真偽属性に不要な値を指定した箇所を検出します。
vue/no-empty-component-block
空の SFC ブロックを検出します。
vue/no-inline-style
インラインの style 属性を検出します。
vue/no-invalid-html-attribute
静的 HTML 属性の無効な値を検出します。現在は rel が対象です。
vue/no-lone-template
不要な template 要素を検出します。
vue/no-multiple-objects-in-class
:class 配列内の複数のオブジェクト指定をまとめます。
vue/no-negated-v-if-condition
v-else がある条件分岐の否定条件を反転して読みやすくします。
vue/no-non-component-keep-alive-child
KeepAlive の直下に通常の HTML 要素を置く箇所を検出します。
vue/no-preprocessor-lang
CSS プリプロセッサーより標準の CSS を使う方針を示します。
vue/no-root-v-if
テンプレートの単一ルートに v-if を指定する箇所を検出します。
vue/no-script-non-standard-lang
script の非標準の lang 指定を避ける方針を示します。
vue/no-src-attribute
SFC ブロックの外部 src 指定を検出します。
vue/no-static-inline-styles
静的なインライン style 属性を検出します。
vue/no-template-lang
template の lang 指定を避ける方針を示します。
vue/no-template-target-blank
target=_blank の外部リンクに適切な rel を指定します。
vue/no-undefined-refs
テンプレート内の未定義変数参照を検出します。
vue/no-unsafe-url
危険なスキームを含む可能性がある URL 属性やバインディングを検出します。
vue/no-unsandboxed-iframe
iframe に sandbox 属性を指定します。
vue/no-unused-refs
テンプレートに宣言しているのに参照しない ref を検出します。
vue/no-unused-setup-bindings
script setup に宣言しているのに読み取らない変数を検出します。
vue/no-use-v-else-with-v-for
同じ要素での v-else / v-else-if と v-for の併用を検出します。
vue/no-useless-mustaches
文字列リテラルだけの不要な mustache を検出します。
vue/no-useless-v-bind
文字列リテラルだけの不要な v-bind を検出します。
vue/no-v-text
v-text の代わりに mustache を使う方針を適用します。
vue/prefer-props-shorthand
Vue 3.4 の同名 prop バインディングの省略形を使います。
vue/prefer-true-attribute-shorthand
true を指定するバインディングを真偽属性の省略形にします。
vue/require-component-registration
使用するコンポーネントを import または登録します。
vue/require-scoped-style
style に scoped を指定する方針を適用します。
vue/scoped-event-names
イベント名を context:event の形式に揃えます。
vue/sfc-element-order
SFC のトップレベルブロックを設定した順に並べます。
vue/single-style-block
SFC の style を一つのブロックにまとめます。
vue/slot-name-casing
名前付きスロットを kebab-case に揃えます。
vue/this-in-template
テンプレートで不要な this. 参照を検出します。
vue/v-on-event-hyphenation
コンポーネントのカスタムイベント名を設定した形式に揃えます。
vue/v-on-handler-style
イベントハンドラーの書き方を参照または関数の形式に揃えます。
vue/warn-custom-block
SFC のカスタムブロックを検出します。
vue/warn-custom-directive
登録が必要なカスタムディレクティブを検出します。
a11y/alt-text
画像などのメディアに代替テキストを用意します。
a11y/anchor-has-content
リンクに支援技術で読める内容を用意します。
a11y/anchor-is-valid
リンクの href に有効な移動先を指定します。
a11y/aria-props
存在しない ARIA 属性を検出します。
a11y/aria-role
抽象ロールを除く、有効な ARIA role を指定します。
a11y/aria-unsupported-elements
ARIA 属性を使用できない要素への指定を検出します。
a11y/click-events-have-key-events
クリックで操作する要素にキーボード操作も用意します。
a11y/form-control-has-label
フォーム部品に関連付けられたラベルを用意します。
a11y/heading-has-content
見出しに支援技術で読める内容を用意します。
a11y/heading-levels
見出しの階層を飛ばした指定を検出します。
a11y/iframe-has-title
iframe に内容を説明する title を指定します。
a11y/img-alt
画像に alt 属性を指定します。装飾画像は空の alt を使います。
a11y/interactive-supports-focus
操作可能な role の要素をフォーカス可能にします。
a11y/label-has-for
label を対象のフォーム部品と関連付けます。
a11y/landmark-roles
ランドマーク role の配置と重複を検査します。
a11y/media-has-caption
音声・動画に字幕を用意します。
a11y/mouse-events-have-key-events
マウス操作と対応する focus / blur 操作を用意します。
a11y/no-access-key
環境のショートカットと衝突し得る accesskey を検出します。
a11y/no-aria-hidden-on-focusable
フォーカス可能な要素を aria-hidden で支援技術から隠す指定を検出します。
a11y/no-autofocus
意図せずフォーカスを移動させる autofocus を検出します。
a11y/no-distracting-elements
marquee や blink などの注意をそらす要素を検出します。
a11y/no-i-for-icon
アイコン用の i 要素を検出し、意味に合う要素を勧めます。
a11y/no-redundant-roles
要素本来の意味と重複する ARIA role を検出します。
a11y/no-refer-to-non-existent-id
文書内に存在しない ID への参照を検出します。
a11y/no-role-presentation-on-focusable
フォーカス可能な要素への role="presentation" または role="none" の指定を検出します。
a11y/no-static-element-interactions
操作部品ではない要素へのイベント指定を検出します。
a11y/placeholder-label-option
required の select を値が空のプレースホルダー option から始めます。
a11y/role-has-required-aria-props
ARIA role が必要とする属性を指定します。
a11y/tabindex-no-positive
通常のフォーカス順序を変える正の tabindex を検出します。
a11y/use-list
箇条書きに見えるテキストをリスト要素で表現します。
vue/use-unique-element-ids
静的 ID の代わりに useId() で一意な ID を生成します。
html/deprecated-attr
非推奨の HTML 属性を検出します。
html/deprecated-element
非推奨の HTML 要素を検出します。
html/id-duplication
同じテンプレート内の ID 重複を検出します。
html/no-consecutive-br
連続する br 要素による余白指定を検出します。
html/no-dupe-style-properties
静的 style 属性内のプロパティ重複を検出します。
html/no-duplicate-class
静的 class 属性内のクラス名重複を検出します。
html/no-duplicate-dt
dl 内の dt の名前重複を検出します。
html/no-empty-palpable-content
可視コンテンツを期待する要素が空の場合に検出します。
html/require-datetime
time 要素に機械可読の datetime を指定します。
type/no-floating-promises
処理しないまま放置された Promise を検出します。
type/no-reactivity-loss
リアクティブな値を代入や呼び出しで取り出し、元の更新に追従しないスナップショットになる箇所を検出します。
type/no-unsafe-template-binding
テンプレートで安全でない型の値を使用する箇所を検出します。
type/require-typed-emits
defineEmits に型定義を指定します。
type/require-typed-props
defineProps に型定義を指定します。
type/strict-boolean-expressions
script とテンプレートの条件式で安全な真偽判定を使います。
script/no-get-current-instance
Vapor で null を返す getCurrentInstance() を検出します。
script/no-next-tick
Vapor 向けコンポーネントの nextTick() 使用を検出します。
script/no-options-api
Vapor で Options API を使用する箇所を検出します。
vapor/no-inline-template
Vapor で削除済みの inline-template 属性を検出します。
vapor/no-vue-lifecycle-events
Vapor では未対応の、要素ごとに指定する @vue:* ライフサイクルイベントを検出します。
vapor/prefer-static-class
文字列リテラルの :class を静的 class に置き換えます。
vapor/require-vapor-attribute
Vapor 向けの script setup に vapor 属性を付ける規約を示します。
ecosystem/nuxt-prefer-nuxt-link
Nuxt の内部リンクに NuxtLink を使います。
ecosystem/pinia-prefer-store-to-refs
Pinia store の分割代入に storeToRefs() を使います。
ecosystem/router-link-require-to
RouterLink / NuxtLink に to を指定します。
ecosystem/void-link-require-href
Void Vue の Link に href を指定します。
ecosystem/void-link-valid-method
Void Vue の Link に有効な静的 method を指定します。
ecosystem/vue-i18n-no-missing-key
SFC 内の翻訳データに存在しない静的キーを検出します。
ecosystem/vue-router-prefer-named-link
RouterLink の文字列パスを名前付きルートの指定に置き換えます。
ecosystem/vue-router-prefer-named-push
Vue Router のプログラムによる移動に名前付きルートを使います。
ecosystem/vue-test-utils-no-html-snapshot
wrapper.html() 全体のスナップショットに依存するテストを検出します。
css/no-display-none
表示切り替えに display: none を使う箇所で v-show を検討します。
css/no-hardcoded-values
CSS に直接記述した値を CSS 変数にまとめます。
css/no-id-selectors
詳細度が高い CSS の ID セレクターを検出します。
css/no-important
通常のカスケードを上書きする !important を検出します。
css/no-utility-classes
コンポーネント内でユーティリティクラスを定義する箇所を検出します。
css/no-v-bind-performance
CSS v-bind() の実行時コストを検討するための警告です。
css/prefer-logical-properties
書字方向に対応する CSS の論理プロパティを使います。
css/prefer-nested-selectors
子孫セレクターを CSS のネスト構文でまとめます。
css/prefer-slotted
slot や子コンポーネントに対する scoped CSS のセレクターを検査します。
css/require-font-display
@font-face に font-display を指定します。
musea/no-empty-variant
内容のない variant ブロックを検出します。
musea/prefer-design-tokens
CSS に直接記述した値が登録済みのデザイントークンの値に一致する場合、対応する CSS 変数で表現します。
musea/require-component
art ブロックに対象の component を指定します。
musea/require-title
art ブロックに title を指定します。
musea/unique-variant-names
同じ Art ファイル内の variant 名を一意にします。
musea/valid-variant
variant ブロックに name を指定します。
script/component-options-name-casing
コンポーネントの name オプションを PascalCase に揃えます。
script/custom-event-name-casing
emit するカスタムイベント名を指定した形式に揃えます。
script/define-emits-declaration
defineEmits を型による宣言形式に揃えます。
script/define-macros-order
script setup のコンパイラーマクロを一定の順に宣言します。
script/define-props-declaration
defineProps を型による宣言形式に揃えます。
script/define-props-destructuring
defineProps の分割代入スタイルを指定した方針に揃えます。
script/no-arrow-functions-in-watch
Options API の watch ハンドラーにアロー関数を使う箇所を検出します。
script/no-async-in-computed
computed の getter で非同期関数を使う箇所を検出します。
script/no-boolean-default
Boolean prop の冗長な default を検出します。
script/no-computed-properties-in-data
初期化前の data() で算出プロパティを読む箇所を検出します。
script/no-deep-destructure-in-props
defineProps の深い分割代入を検出します。
script/no-deprecated-data-object-declaration
Vue 3 で関数にすべき data オプションのオブジェクト指定を検出します。
script/no-deprecated-delete-set
Vue 3 で削除された $set / $delete を検出します。
script/no-deprecated-destroyed-lifecycle
Vue 2 の destroyed / beforeDestroy を検出し、Vue 3 のライフサイクルフックに置き換えます。
script/no-deprecated-dollar-listeners-api
Vue 3 で $attrs に統合された $listeners を検出します。
script/no-deprecated-dollar-scopedslots-api
Vue 3 で $slots に統合された $scopedSlots を検出します。
script/no-deprecated-events-api
Vue 3 で削除された $on / $off / $once を検出します。
script/no-deprecated-model-definition
Vue 3 で削除された model オプションを検出します。
script/no-deprecated-props-default-this
prop の default / validator 内で使えなくなった this を検出します。
script/no-deprecated-vue-config-keycodes
削除された Vue.config.keyCodes を検出します。
script/no-dupe-keys
Options API の props / data / computed などのキー重複を検出します。
script/no-duplicate-attr-inheritance
fallthrough 属性を同じコンポーネントで二重に適用する箇所を検出します。
script/no-export-in-script-setup
script setup 内の export 文を検出します。
script/no-expose-after-await
await の後の expose() と defineExpose() を禁止します。
script/no-import-compiler-macros
自動的に使える Vue コンパイラーマクロの import を検出します。
script/no-internal-imports
Vue 内部モジュールからの import を検出します。
script/no-lifecycle-after-await
setup() 内で await の後にライフサイクルフックを登録することを禁止します。
script/no-multiple-slot-args
scoped slot 関数に複数の引数を渡す箇所を検出します。
script/no-potential-component-option-typo
Options API のオプション名の入力ミスを検出します。
script/no-reactive-destructure
reactive オブジェクトを分割代入し、リアクティビティを失う箇所を検出します。
script/no-ref-as-operand
ref を演算の値として使う際に .value を参照します。
script/no-required-prop-with-default
required: true と default を同時に持つ prop を検出します。
script/no-reserved-identifiers
Vue コンパイラーが予約した識別子の宣言を検出します。
script/no-reserved-keys
Options API のキーに Vue の予約名を使う箇所を検出します。
script/no-reserved-props
prop 宣言に Vue の予約名を使う箇所を検出します。
script/no-restricted-globals
設定で禁止した実行環境のグローバル参照を検出します。
script/no-restricted-members
設定で禁止した object.property へのアクセスを検出します。
script/no-side-effects-in-computed-properties
Options API の computed getter 内の副作用を検出します。
script/no-top-level-ref-in-script
通常の script のトップレベルで、リクエスト間に共有される状態を作る箇所を検出します。
script/no-unstable-nested-components
setup / render 内で毎回コンポーネントを定義する箇所を検出します。
script/no-unused-emit-declarations
宣言したまま emit していないイベントを検出します。
script/no-use-computed-property-like-method
Options API の computed プロパティをメソッドとして呼ぶ箇所を検出します。
script/no-watch-after-await
setup() 内で await の後に停止ハンドルを保持せずにウォッチャーを登録することを禁止します。
script/no-with-defaults
Vue 3.5 以降の props 分割代入の既定値を勧めます。
script/one-component-per-file
1 ファイルにコンポーネント定義が複数あることを検出します。
script/order-in-components
コンポーネントオプションのプロパティ順を既定の並びに揃えます。
script/prefer-computed
他の状態から導ける値を watcher で同期する代わりに computed で表現します。
script/prefer-define-options
name / inheritAttrs だけの通常 script を defineOptions() にまとめます。
script/prefer-import-from-vue
内部パッケージではなく vue から import します。
script/prefer-ref-over-reactive
状態管理に reactive() より ref() を使う方針を適用します。
script/prefer-use-attrs
setup の context.attrs を useAttrs() に置き換えます。
script/prefer-use-id
一意な ID の生成に Vue 3.5 の useId() を使います。
script/prefer-use-slots
setup の context.slots を useSlots() に置き換えます。
script/prefer-use-template-ref
テンプレート参照に Vue 3.5 の useTemplateRef() を使います。
script/require-default-prop
省略可能な、Boolean 以外の prop に default を用意します。
script/require-explicit-emits
emit するイベントを defineEmits または emits に宣言します。
script/require-explicit-slots
useSlots() で使う slot を defineSlots の型で宣言します。
script/require-function-return-type
関数に戻り値の型注釈を指定します。
script/require-prop-type-constructor
prop の type に文字列ではなくコンストラクターを指定します。
script/require-prop-types
各 prop の型を宣言します。
script/require-render-return
render 関数が値を返すことを必須にします。
script/require-slots-as-functions
Vue 3 の $slots プロパティを関数として呼び出します。
script/require-symbol-provide
provide / inject のキーに衝突しにくい Symbol を使います。
script/require-typed-object-prop
Object / Array の prop に具体的な型を指定します。
script/require-typed-ref
引数なし、null、undefined で呼び出す ref() に型引数を指定します。
script/require-valid-default-prop
prop の default を宣言した型に合う値にします。
script/return-in-computed-property
computed の getter に値を返す return を用意します。
script/return-in-emits-validator
Options API の emits validator に戻り値を用意します。
script/valid-define-emits
defineEmits の重複や型と実行時引数の併用を検出します。
script/valid-define-options
defineOptions の引数と使用回数を検査します。
script/valid-define-props
defineProps の重複や型と実行時引数の併用を検出します。
script/valid-next-tick
nextTick() の完了を await、then、またはコールバックで扱います。
nuxt/no-nuxt-config-test-key
Nuxt 設定の test キーに旧形式の真偽値を指定する箇所を検出します。
nuxt/no-page-meta-runtime-values
definePageMeta の即時評価部分で実行時コンテキストを使う箇所を検出します。
nuxt/nuxt-config-keys-order
Nuxt 設定のプロパティを推奨順に並べます。
nuxt/prefer-import-meta
Nuxt の環境フラグを process.* から import.meta.* に置き換えます。
プロジェクトの例
ecosystem/vue-router-unknown-route
登録済み router に存在しない名前です。
ecosystem/vue-router-extra-param
パスにない tab は Vue Router に破棄されます。
ecosystem/vue-router-param-type
postId は繰り返しパラメーターではないため配列を渡せません。
ecosystem/vue-router-missing-param
必須の postId がありません。現在のルートに依存する遷移になります。
html/cross-component-nesting
import した子コンポーネントの要素を合成して HTML の入れ子を検査します。
vue/cross-file-attrs-fallthrough
属性を渡す親と、属性を自動継承できず $attrs も使っていない子コンポーネントの関係を検査します。
vize:croquis/cf/array-mutation
現在の生成元がないこの契約では、旧 Vue 2.7 の配列のインデックス代入を例にしています。Vue 2 は直接のインデックス代入による更新を通知しませんが、Vue 3 はその代入を追跡します。悪い例・良い例は Vue 2 の修正を示すもので、Vue 3 の不具合を示す例ではありません。
vize:croquis/cf/async-boundary
reactive な状態が async 境界を越え、古い値が見えることがあります。
vize:croquis/cf/async-no-suspense
async コンポーネントが Suspense 境界なしで描画されています。
vize:croquis/cf/browser-api-ssr
サーバーでも描画され得る場所で、ブラウザ専用 API を使っています。
vize:croquis/cf/circular-dep
コンポーネントの import が循環しています。
vize:croquis/cf/circular-reactive-dependency
reactive な計算が互いに循環して依存しています。
vize:croquis/cf/closure-captures-reactive
クロージャが reactive な値を捕捉しており、その後の更新が見えません。
vize:croquis/cf/composable-outside-setup
composable が setup の外で呼ばれています。
vize:croquis/cf/computed-side-effects
computed の getter が状態を書いたり、他の副作用を起こしています。
vize:croquis/cf/deep-import
import の連鎖がプロジェクトの許す深さより深くなっています。
vize:croquis/cf/destructuring-breaks-reactivity
reactive オブジェクトの分割代入はフィールドをコピーし、追跡を失います。
vize:croquis/cf/di-outside-setup
provide または inject が setup の外で呼ばれています。
vize:croquis/cf/dom-access-without-next-tick
Vue が更新を反映する前に DOM を読んでいます。
vize:croquis/cf/duplicate-id
同じ要素 id が複数のコンポーネントで使われています。
vize:croquis/cf/event-listener-leak
イベントリスナーが登録されたまま、解除されていません。
vize:croquis/cf/event-modifier
emit が対応しない修飾子を、イベントリスナーが使っています。
vize:croquis/cf/hydration-risk
この診断コードは、prop を ref にコピーする操作など、リアクティビティに関する複数の検出結果をまとめています。ファイル間検査がすべての Date.now() 式を検出するという意味ではありません。
vize:croquis/cf/inherit-attrs-unused
inheritAttrs: false が設定されているのに、属性が読まれていません。
vize:croquis/cf/inject-without-symbol
inject が InjectionKey のシンボルではなく素のキーを使っています。
vize:croquis/cf/injected-async-mutation-race
inject した値が、競合し得る async タスクから変更されています。
vize:croquis/cf/lifecycle-outside-setup
ライフサイクルフックが setup の外で登録されています。
vize:croquis/cf/lifecycle-without-cleanup
ライフサイクルフックが後片付けなしで処理を始めています。
vize:croquis/cf/missing-required-prop
必須 prop が渡されていません。
vize:croquis/cf/missing-suspense
async な依存が Suspense 境界の外で使われています。
vize:croquis/cf/module-scope-reactive
reactive な状態がモジュールスコープで作られ、すべての呼び出し元で共有されます。
vize:croquis/cf/multi-root-attrs
複数ルートのコンポーネントが属性を受け取りますが、付ける場所がありません。
vize:croquis/cf/mutated-after-escape
reactive オブジェクトが、所有者から漏れた後に変更されています。
vize:croquis/cf/non-reactive-provide
provide した値が reactive ではないため、子孫は更新を観測できません。
vize:croquis/cf/non-unique-id
ループ内の要素 id が項目ごとに一意ではありません。
vize:croquis/cf/object-identity-comparison
元のオブジェクトとそのリアクティブな Proxy は別の同一性を持ち、toRaw() は元のオブジェクトを返します。この契約の例は、レコードとして同じものかを判定するために安定した ID を比較する方法を示します。
vize:croquis/cf/pinia-getter
この契約の例では、setup で Pinia の getter から現在のプリミティブ値をコピーし、更新に追従しないスナップショットを作っています。追跡される計算やテンプレートで getter を直接読む場合はリアクティビティを保てます。この例では storeToRefs() を使って値を取り出します。
vize:croquis/cf/prop-type-mismatch
渡した prop の値が、宣言された型と一致しません。
vize:croquis/cf/provide-inject-type
provide した値と inject の型が一致しません。
vize:croquis/cf/provide-without-symbol
provide が InjectionKey のシンボルではなく素のキーを使っています。
vize:croquis/cf/reactive-export
reactive な状態がモジュールから export されています。
vize:croquis/cf/reactivity-outside-setup
reactive API が setup の外で呼ばれています。
vize:croquis/cf/reassignment-breaks-reactivity
reactive な束縛を再代入すると、ただの値に置き換わります。
vize:croquis/cf/reference-escapes-scope
reactive な参照が、寿命を持つスコープの外へ漏れています。
vize:croquis/cf/setup-context-violation
実験的な解析器の例では、インスタンスごとの setup ではなく通常の script のモジュールスコープに ref(0) を置いています。Vue ではこのようなリアクティブな状態を作れますが、この例ではインスタンスごとに count を持つことを前提とします。CLI はこの個別の診断コードを生成しません。
vize:croquis/cf/shallow-deep-access
shallowReactive または shallowRef の深いプロパティを、追跡されるものとして読んでいます。
vize:croquis/cf/spread-breaks-reactivity
reactive オブジェクトのスプレッドは値をコピーし、追跡を失います。
vize:croquis/cf/suspense-no-fallback
<Suspense> に fallback がありません。
vize:croquis/cf/template-ref-timing
テンプレート ref が、コンポーネントのマウント前に読まれています。
vize:croquis/cf/toraw-mutation
toRaw した生のオブジェクトを変更しています。
vize:croquis/cf/uncaught-error
コンポーネントが例外を投げても、受け止めるエラー境界がありません。
vize:croquis/cf/undeclared-emit
宣言されていないイベントを emit しています。
vize:croquis/cf/undeclared-prop
親が、子が宣言していない prop を渡しています。
vize:croquis/cf/undefined-slot
親が、子が公開していないスロットを埋めています。
vize:croquis/cf/unhandled-event
子が emit したイベントを、どの親も処理していません。
vize:croquis/cf/unmatched-inject
inject が、どの祖先も provide していないキーを指定しています。
vize:croquis/cf/unmatched-listener
親が、子が emit しないイベントを購読しています。
vize:croquis/cf/unregistered-component
テンプレートが、登録も import もされていないコンポーネントを使っています。
vize:croquis/cf/unresolved-import
import がモジュールへ解決できません。
vize:croquis/cf/unused-attrs
複数ルートのコンポーネントに渡した fallthrough 属性が使われていません。
vize:croquis/cf/unused-emit
宣言した emit が一度も使われていません。
vize:croquis/cf/unused-provide
provide したキーが一度も inject されていません。
vize:croquis/cf/value-extraction-breaks-reactivity
reactive な値をローカルへ取り出すと、その後の更新が失われます。
vize:croquis/cf/watch-can-be-computed
ウォッチャが値を状態へ写しているだけで、computed にできます。
vize:croquis/cf/watcheffect-async
この例の非同期の watchEffect には、無効化時のクリーンアップや古い応答を防ぐ処理がありません。Vue の watchEffect はクリーンアップを扱えます。良い例では watch で監視対象を明示し、無効化された処理を中止します。
vize:croquis/cf/watcher-outside-setup
watch または watchEffect が setup の外で呼ばれています。