除外設定
ファイルの除外
設定のexcludeFilesプロパティを使用します。
ルールの無効化
セレクタによる無効化
設定のnodeRulesもしくはchildNodeRulesプロパティを使います。
特定の要素にルールを適用するを参考にしてください。
{
"rules": {
"[[target-rule-id]]": true
},
"nodeRules": [
{
"selector": ".ignore",
"rules": {
"[[target-rule-id]]": false
}
}
]
}
[[target-rule-id]]の部分は無効化したいルールIDに適宜変えてください。
名前付きルールに対しても同じ方法が使えます — ベースルール名や名前空間ワイルドカードを使用できます:
{
"extends": ["markuplint:recommended"],
"nodeRules": [
{
"selector": ".legacy",
"rules": {
// ベースルール名で無効化 — a11y/wai-aria も無効化されます
"wai-aria": false,
// この要素のすべての a11y/* 名前付きルールを無効化
"a11y/*": false
}
}
]
}
名前付きルールの無効化
プリセットが定義する名前付きルールは、rules プロパティで false を指定して個別に無効化できます。名前空間ワイルドカードを使えば名前空間内のすべての名前付きルールを一括で無効化できます。また、ベースルール名をfalseに設定すると、そのベースルールを含むすべての名前付きルールグループ内で該当ルールが無効化されます — 詳細はベースルール名による無効化を参照してください。
{
"extends": ["markuplint:recommended"],
"rules": {
// 特定の名前付きルールを無効化
"a11y/html-lang": false,
// 名前空間内のすべての名前付きルールを無効化
"a11y/*": false,
// ベースルール名で無効化(詳細はプロパティリファレンス参照)
"id-duplication": false
}
}
これらの機能は nodeRules と childNodeRules でも使えます — 詳細は nodeRules リファレンス を参照してください。
利用可能な名前付きルールの一覧はプリセット内の名前付きルールを参照してください。
ルールを上書きして無効化
設定のoverridesプロパティとoverrideModeを使います。
{
"rules": {
"[[target-rule-id]]": true
},
"overrideMode": "merge",
"overrides": {
"./path/to/**/*": {
"rules": {
"any-rule": false
}
}
}
}
[[target-rule-id]]の部分は無効化したいルールIDに適宜変えてください。
一括抑制(Bulk Suppressions)
この機能は実験的であり、今後のリリースで変更される可能性があります。
既存プロジェクトに新しいルールを導入する際、現在の違反をすべて抑制し、新規コードに対してのみルールを適用できます。既存の違反を一度に修正するのが現実的でない場合に有用です。
ワークフロー
# 1. 設定ファイルで新しいルールを有効化した後、現在のエラーをすべて抑制
$ markuplint --suppress "src/**/*.html"
# 2. 生成されたsuppressionsファイルをリポジトリにコミット
$ git add markuplint-suppressions.json
# 3. 以降は新規の違反のみが報告される
$ markuplint "src/**/*.html"
# 4. 既存の違反を修正したら、不要なエントリを削除
$ markuplint --prune-suppressions "src/**/*.html"
仕組み
--suppressコマンドは、現在のerrorレベルの違反をmarkuplint-suppressions.jsonファイルに記録します。以降の実行時にこのファイルを読み込み、記録された違反を抑制します。ファイル+ルールの組み合わせで違反数が抑制カウントを超えた場合、その組み合わせのすべての違反が報告されます。これにより新しいリグレッションが隠されることを防ぎます。
各エントリには、抑制を特定のDOMサブツリーに絞り込むオプションのスコープセレクタが含まれます。スコープは、すべての違反ノードの最小共通祖先(LCA: Lowest Common Ancestor)を使用して自動的に計算されます。
{
"src/index.html": {
"attr-duplication": { "count": 3, "scope": "#main-nav > ul" }
}
}
主な動作
errorレベルの違反のみが抑制対象です。warningとinfoは常にパススルーされます--suppressは常に終了コード0(成功)を返します--suppressと--prune-suppressionsは同時に使用できません- suppressionsファイルはリポジトリにコミットすることを推奨します
CLIオプション
| オプション | 説明 |
|---|---|
--suppress | 現在の全エラー違反を記録 |
--suppress-rule <rule> | 指定ルールの違反のみ記録 |
--prune-suppressions | 修正済みの違反のエントリを削除 |
--suppressions-location <path> | suppressionsファイルのカスタムパス(デフォルト: markuplint-suppressions.json) |
スコープセレクタ
スコープセレクタはドキュメントの特定の部分に抑制を絞り込みます。自動的に生成され、以下の戦略が優先順位順に使用されます:
#id— 祖先にid属性がある場合tag.class— 祖先にCSSクラスがある場合tag[role="..."]— 祖先にrole属性がある場合(<input>の場合はtypeも対象)tag:nth-of-type(n)— 同名の兄弟要素を区別するため
スコープを絞れない場合(例: 違反がドキュメント全体に分散している場合)、抑制はファイル全体に適用されます。
スコープセレクタが要素にマッチしなくなった場合(例: リファクタリング後)、抑制は維持され--prune-suppressionsがクリーンアップを推奨します。壊れたスコープが新しい違反を隠すことはありません。
詳しい設計理念については、Bulk Suppressions設計ドキュメントを参照してください。