メインコンテンツまでスキップ

link-types

<link><a><area><form>要素のrel属性のリンクタイプキーワードをWHATWG標準に対して検証します。

このルールは以下をチェックします:

  • キーワードが特定の要素で許可されているかどうか(例: bookmark<a>では許可されているが<link>では不許可)
  • <body>内の<link>要素がbody-okキーワードのみを使用しているかどうか
  • キーワードがMicroformatsレジストリでドロップ、リジェクト、または非HTMLとされたキーワードかどうか
注記

invalid-attrルールも型システム経由でrel属性値を検証しますが、body-okコンテキストはチェックせず、Microformatsキーワードを常に許可します。link-typesルールはbody-okチェックとMicroformats制御をより詳細なエラーメッセージとともに提供します。両方のルールを併用でき、チェック内容は補完的です。

❌ 間違ったコード例

<!-- "bookmark" は <link> では不許可 -->
<link rel="bookmark" />

<!-- "canonical" は body-ok ではないため <body> 内では不許可 -->
<html>
<head></head>
<body>
<link rel="canonical" href="https://example.com/" />
</body>
</html>

<!-- "stylesheet" は <a> では不許可 -->
<a rel="stylesheet" href="/style.css">link</a>

✅ 正しいコード例

<link rel="stylesheet" href="/style.css" />
<link rel="canonical" href="https://example.com/" />
<a rel="noopener noreferrer" href="https://example.com/">link</a>
<form rel="nofollow" action="/submit"></form>

Interface

{
"link-types": boolean
}

rel属性のリンクタイプキーワードをWHATWG標準およびオプションでMicroformatsレジストリに対して検証します。

Options

{
"link-types": {
"options": {
"allowMicroformats"?: boolean | string[]
}
}
}
PropertyTypeDefault ValueDescription
allowMicroformatsboolean | string[]falseMicroformatsのリンクタイプキーワードを許可するかどうか。falseはWHATWG標準キーワードのみを許可します。trueは登録済みのすべてのMicroformatsキーワードを許可します。文字列の配列は指定されたキーワードのみを許可します。

Default Severity

error

設定例

デフォルト(WHATWG標準のみ)

{
"rules": {
"link-types": true
}
}

allowMicroformats

型: boolean | string[]

Microformatsリンクタイプキーワードを許可するかどうかを制御します。Microformatsキーワードリストはmicroformats.org wikiの登録済みキーワードに基づいています。

Microformatsキーワードが許可されている場合でも、要素コンテキストの検証は適用されます。例えば、<a>専用のキーワードは<link>では拒否されます。Microformatsレジストリはフォームコンテキストを定義していないため、<form>ではMicroformatsキーワードは常に拒否されます。

true — 登録済みのすべてのMicroformatsキーワードを許可

{
"rules": {
"link-types": {
"options": {
"allowMicroformats": true
}
}
}
}

string[] — 指定されたキーワードのみ許可

指定されたキーワードのみを許可します。レジストリに登録されていないカスタムキーワードも指定できます。

{
"rules": {
"link-types": {
"options": {
"allowMicroformats": ["apple-touch-icon", "mask-icon"]
}
}
}
}