ルールを適用する
デフォルトの挙動
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
}
}