ルールを適用する
デフォルトの挙動
Markuplintは実行時、設定ファイルを自動で探します。設定ファイルが見つからなかった場合、推奨プリセットのルールを適用します。見つかった場合はその設定に従います。
ルールの設定
設定ファイルが必要になります。用意できたらrulesプロパティに必要なルールを追加します。
{
  "rules": {
    // ここに追加していく
    "[rule-name]": true,
    "[rule-name2]": "Any Value",
    "[rule-name3]": {
      "value": 12345
    }
  }
}
false以外を値に指定すると、ルールが有効化されます。つまり、falseを指定した場合は無効化されます。値の詳細はrulesプロパティにをご覧ください。
部分的な適用
構造の一部のみにルールを適用したい場合は、セレクタをnodeRulesまたはchildNodeRulesプロパティに設定します。また、childNodeRulesは対象要素の子要素(inheritanceを設定すれば子孫も含む)に対して適用されます。
{
  "nodeRules": [
    {
      // <main> のみに適用
      "selector": "main",
      "rules": {
        "class-naming": "/[a-z]+(__[a-z]+)?/"
      }
    },
    {
      // 「some-class-name」クラスをもつ要素のみに適用
      "selector": ".some-class-name",
      "rules": {
        "required-attr": true
      }
    }
  ],
  "childNodeRules": [
    {
      // 「ignoreClass」クラスをもつ要素の子要素のみに適用
      "selector": ".ignoreClass",
      "rules": {
        "character-reference": false
      }
    },
    {
      // 「ignoreA11y」クラスをもつ要素の子孫要素のみに適用
      "selector": ".ignoreA11y",
      "inheritance": true,
      "rules": {
        "wai-aria": false
      }
    }
  ]
}
組み込みルール
各組込みルールの詳細は、「ルール」ページよりご確認ください。
カスタムルールの適用
もちろん、サードパーティまたはご自身で作成したカスタムルールの適用が可能です。
スラッシュ区切りでプラグイン名とルール名を指定することでカスタムルールが適用されます。
{
  "rules": {
    "[plugin-name]/[rule-name]": true
  }
}
プラグイン名とルール名は以下のように定義されます。
./plugin.js
import { createPlugin, createRule } from '@markuplint/ml-core';
export default createPlugin({
  name: 'my-plugin',
  create(settings) {
    return {
      rules: {
        'my-rule': createRule({
          verify({ report }) {
            // 評価とレポーティングを行う
            report(/* ... */);
          },
        }),
      },
    };
  },
});
{
  "plugins": ["./plugin.js"],
  "rules": {
    "my-plugin/my-rule": true
  }
}