2023-10-25 01:30:58 -07:00
|
|
|
|
// This file defines our configuration for Markdownlint. See
|
|
|
|
|
|
// https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md
|
|
|
|
|
|
// for more details on each rule.
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
"default": true,
|
2024-08-14 16:21:05 -04:00
|
|
|
|
"heading-increment": true,
|
2023-10-25 01:30:58 -07:00
|
|
|
|
"ul-style": {
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"style": "dash",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
"ul-indent": {
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"indent": 2,
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
"no-hard-tabs": {
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"spaces_per_tab": 2,
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
2023-11-23 22:01:03 +00:00
|
|
|
|
"no-duplicate-heading": {
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"siblings_only": true,
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
"single-title": {
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"front_matter_title": "^\\s*title\\s*[:=]",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
"no-trailing-punctuation": {
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"punctuation": ".,;:",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
// Consecutive Notes/Callouts currently don't conform with this rule
|
|
|
|
|
|
"no-blanks-blockquote": false,
|
|
|
|
|
|
// Force ordered numbering to catch accidental list ending from indenting
|
|
|
|
|
|
"ol-prefix": {
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"style": "ordered",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
2025-06-25 01:24:22 +00:00
|
|
|
|
// Duplicate with with Prettier
|
2025-11-13 20:10:50 +00:00
|
|
|
|
"line-length": false,
|
2025-06-25 01:24:22 +00:00
|
|
|
|
"blanks-around-fences": false,
|
2025-11-13 20:10:50 +00:00
|
|
|
|
"table-column-style": false,
|
2023-10-25 01:30:58 -07:00
|
|
|
|
"no-inline-html": {
|
|
|
|
|
|
"allowed_elements": [
|
|
|
|
|
|
"a",
|
|
|
|
|
|
"abbr",
|
|
|
|
|
|
"annotation",
|
|
|
|
|
|
"br",
|
|
|
|
|
|
"caption",
|
|
|
|
|
|
"code",
|
|
|
|
|
|
"col",
|
|
|
|
|
|
"colgroup",
|
|
|
|
|
|
"dd",
|
|
|
|
|
|
"details",
|
|
|
|
|
|
"div",
|
|
|
|
|
|
"dl",
|
|
|
|
|
|
"dt",
|
|
|
|
|
|
"em",
|
|
|
|
|
|
"h4",
|
|
|
|
|
|
"h5",
|
|
|
|
|
|
"img",
|
|
|
|
|
|
"kbd",
|
|
|
|
|
|
"li",
|
|
|
|
|
|
"math",
|
2025-09-05 07:24:02 +02:00
|
|
|
|
"mdn-scrim-inline",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
"menclose",
|
|
|
|
|
|
"mfenced",
|
|
|
|
|
|
"mfrac",
|
|
|
|
|
|
"mfrac",
|
|
|
|
|
|
"mi",
|
|
|
|
|
|
"mmultiscripts",
|
|
|
|
|
|
"mn",
|
|
|
|
|
|
"mo",
|
|
|
|
|
|
"mover",
|
|
|
|
|
|
"mphantom",
|
|
|
|
|
|
"mprescripts",
|
|
|
|
|
|
"mroot",
|
|
|
|
|
|
"mrow",
|
|
|
|
|
|
"ms",
|
|
|
|
|
|
"mspace",
|
|
|
|
|
|
"mspace",
|
|
|
|
|
|
"msqrt",
|
|
|
|
|
|
"mstyle",
|
|
|
|
|
|
"msub",
|
|
|
|
|
|
"msubsup",
|
|
|
|
|
|
"msup",
|
|
|
|
|
|
"mtable",
|
|
|
|
|
|
"mtd",
|
|
|
|
|
|
"mtext",
|
|
|
|
|
|
"mtr",
|
|
|
|
|
|
"munder",
|
|
|
|
|
|
"munderover",
|
|
|
|
|
|
"none",
|
|
|
|
|
|
"ol",
|
|
|
|
|
|
"p",
|
|
|
|
|
|
"pre",
|
|
|
|
|
|
"q",
|
|
|
|
|
|
"section",
|
|
|
|
|
|
"semantics",
|
|
|
|
|
|
"strong",
|
|
|
|
|
|
"sub",
|
|
|
|
|
|
"summary",
|
|
|
|
|
|
"sup",
|
|
|
|
|
|
"table",
|
|
|
|
|
|
"tbody",
|
|
|
|
|
|
"td",
|
|
|
|
|
|
"tfoot",
|
|
|
|
|
|
"th",
|
|
|
|
|
|
"thead",
|
|
|
|
|
|
"tr",
|
|
|
|
|
|
"ul",
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"var",
|
|
|
|
|
|
],
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
"no-bare-urls": false,
|
|
|
|
|
|
// Produces too many false positives
|
|
|
|
|
|
"no-space-in-emphasis": false,
|
2025-04-07 11:34:20 -04:00
|
|
|
|
"fenced-code-language": {
|
|
|
|
|
|
// Your language is not in this list? Please check https://github.com/orgs/mdn/discussions/170#discussioncomment-3404366
|
|
|
|
|
|
"allowed_languages": [
|
|
|
|
|
|
"apacheconf",
|
|
|
|
|
|
"bash",
|
|
|
|
|
|
"batch",
|
2025-04-22 02:52:12 -04:00
|
|
|
|
"c",
|
2025-04-07 11:34:20 -04:00
|
|
|
|
"cpp",
|
|
|
|
|
|
"cs",
|
|
|
|
|
|
"css",
|
|
|
|
|
|
"css-nolint",
|
|
|
|
|
|
"diff",
|
|
|
|
|
|
"django",
|
|
|
|
|
|
"glsl",
|
|
|
|
|
|
"hbs",
|
|
|
|
|
|
"hbs-nolint",
|
|
|
|
|
|
"html",
|
|
|
|
|
|
"html-nolint",
|
|
|
|
|
|
"http",
|
|
|
|
|
|
"ini",
|
|
|
|
|
|
"java",
|
|
|
|
|
|
"js",
|
|
|
|
|
|
"js-nolint",
|
|
|
|
|
|
"json",
|
|
|
|
|
|
"json-nolint",
|
|
|
|
|
|
"jsx",
|
|
|
|
|
|
"jsx-nolint",
|
|
|
|
|
|
"latex",
|
|
|
|
|
|
"md",
|
|
|
|
|
|
"md-nolint",
|
|
|
|
|
|
"nginx",
|
|
|
|
|
|
"php",
|
|
|
|
|
|
"plain",
|
|
|
|
|
|
"powershell",
|
|
|
|
|
|
"pug",
|
|
|
|
|
|
"python",
|
|
|
|
|
|
"regex",
|
|
|
|
|
|
"rust",
|
|
|
|
|
|
"scss",
|
|
|
|
|
|
"sh",
|
|
|
|
|
|
"sql",
|
|
|
|
|
|
"svelte",
|
|
|
|
|
|
"svg",
|
|
|
|
|
|
"toml",
|
|
|
|
|
|
"ts",
|
|
|
|
|
|
"url",
|
|
|
|
|
|
"vue",
|
|
|
|
|
|
"wat",
|
|
|
|
|
|
"webidl",
|
|
|
|
|
|
"xml",
|
|
|
|
|
|
"yaml",
|
|
|
|
|
|
],
|
|
|
|
|
|
},
|
2023-10-25 01:30:58 -07:00
|
|
|
|
// See https://github.com/mdn/content/pull/20026, as macros currently break this
|
|
|
|
|
|
"no-empty-links": false,
|
|
|
|
|
|
"code-block-style": {
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"style": "fenced",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
"emphasis-style": {
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"style": "underscore",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
"strong-style": {
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"style": "asterisk",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
// Disabled, as yari generates link fragments by replacing spaces with underscores, not dashes.
|
|
|
|
|
|
"link-fragments": false,
|
2025-05-14 12:00:04 +08:00
|
|
|
|
"descriptive-link-text": {
|
|
|
|
|
|
"prohibited_texts": [
|
|
|
|
|
|
"here",
|
|
|
|
|
|
"link",
|
|
|
|
|
|
"more",
|
|
|
|
|
|
"this",
|
|
|
|
|
|
"this link",
|
|
|
|
|
|
"this page",
|
|
|
|
|
|
"this site",
|
|
|
|
|
|
"this article",
|
|
|
|
|
|
"click here",
|
|
|
|
|
|
"click this link",
|
|
|
|
|
|
"see here",
|
|
|
|
|
|
"see this page",
|
|
|
|
|
|
"see this site",
|
|
|
|
|
|
"see this article",
|
|
|
|
|
|
],
|
|
|
|
|
|
},
|
2023-10-25 01:30:58 -07:00
|
|
|
|
|
|
|
|
|
|
// https://github.com/OnkarRuikar/markdownlint-rule-search-replace
|
|
|
|
|
|
"search-replace": {
|
|
|
|
|
|
"rules": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "curly-double-quotes",
|
|
|
|
|
|
"message": "Don't use curly double quotes",
|
|
|
|
|
|
"searchPattern": "/“|”/g",
|
|
|
|
|
|
"replace": "\"",
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"searchScope": "text",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "curly-single-quotes",
|
|
|
|
|
|
"message": "Don't use curly single quotes",
|
|
|
|
|
|
"searchPattern": "/‘|’/g",
|
|
|
|
|
|
"replace": "'",
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"searchScope": "text",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "nbsp",
|
|
|
|
|
|
"message": "Don't use no-break spaces",
|
|
|
|
|
|
"searchPattern": "/ /g",
|
|
|
|
|
|
"replace": " ",
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"searchScope": "all",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "m-dash",
|
|
|
|
|
|
"message": "Don't use '--'. Use m-dash — instead",
|
|
|
|
|
|
"search": " -- ",
|
|
|
|
|
|
"replace": " — ",
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"searchScope": "text",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "relative-link",
|
|
|
|
|
|
"message": "Internal links should start with '/'",
|
|
|
|
|
|
"searchPattern": "/([\\(\"])en-US\\/docs/g",
|
|
|
|
|
|
"replace": "$1/en-US/docs",
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"searchScope": "text",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "relative-link-path",
|
|
|
|
|
|
"message": "Don't use relative paths",
|
|
|
|
|
|
"search": "](..",
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"searchScope": "text",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "trailing-spaces",
|
|
|
|
|
|
"message": "Avoid trailing spaces",
|
|
|
|
|
|
"searchPattern": "/ +$/gm",
|
|
|
|
|
|
"replace": "",
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"searchScope": "all",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "double-spaces",
|
|
|
|
|
|
"message": "Avoid double spaces",
|
|
|
|
|
|
"searchPattern": "/([^\\s>]) ([^\\s|])/g",
|
|
|
|
|
|
"replace": "$1 $2",
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"searchScope": "text",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "stuck-definition",
|
|
|
|
|
|
"message": "Character is stuck to definition description marker",
|
|
|
|
|
|
"searchPattern": "/- :(\\w)/g",
|
|
|
|
|
|
"replace": "- : $1",
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"searchScope": "text",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "fqdn-moz-links",
|
|
|
|
|
|
"message": "Don't use developer.mozilla.org for links, except for blog posts",
|
|
|
|
|
|
"searchPattern": "/\\]\\(https:\\/\\/developer.mozilla.org\\/(?!en-US\\/blog\\/)/g",
|
|
|
|
|
|
"replace": "](/",
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"searchScope": "text",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "incorrect-spelling",
|
|
|
|
|
|
"message": "Incorrect spelling",
|
|
|
|
|
|
"searchPattern": ["/e-mail/ig", "/(w)eb site/ig"],
|
|
|
|
|
|
"replace": ["email", "$1ebsite"],
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"searchScope": "all",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "localhost-links",
|
|
|
|
|
|
"message": "Don't use localhost for links",
|
|
|
|
|
|
"searchPattern": "/\\]\\(https?:\\/\\/localhost:\\d+\\//g",
|
|
|
|
|
|
"replace": "](/",
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"searchScope": "text",
|
2023-10-25 01:30:58 -07:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "un-closed-md-link",
|
2024-01-12 19:45:47 +01:00
|
|
|
|
"message": "Missing closing bracket ')'",
|
2025-03-10 12:07:58 -04:00
|
|
|
|
"searchPattern": "/\\[.*?\\]\\([^ )\\n\"]+(?:[\\n\"]| [^\"']| [\"'].+?[\"'][^)])/gm",
|
2024-01-15 21:51:13 +00:00
|
|
|
|
"searchScope": "text",
|
|
|
|
|
|
},
|
2024-07-27 17:26:34 +05:30
|
|
|
|
{
|
2024-08-10 02:14:47 -04:00
|
|
|
|
"name": "gfm-alert",
|
2024-07-27 17:26:34 +05:30
|
|
|
|
"message": "Use the GFM syntax: https://developer.mozilla.org/en-US/docs/MDN/Writing_guidelines/Howto/Markdown_in_MDN#notes_warnings_and_callouts",
|
2025-06-24 14:12:11 +08:00
|
|
|
|
"searchPattern": "/^ *> \\*\\*(Note|Warning|Callout):\\*\\*/gm",
|
2024-07-27 17:26:34 +05:30
|
|
|
|
"searchScope": "text",
|
|
|
|
|
|
},
|
2024-08-10 02:14:47 -04:00
|
|
|
|
{
|
|
|
|
|
|
"name": "bad-gfm-alert",
|
|
|
|
|
|
"message": "Use the correct GFM syntax: `> [!NOTE]`",
|
|
|
|
|
|
// TODO this should use the modifier syntax; until it has better Node support
|
2025-04-30 10:11:53 -04:00
|
|
|
|
"searchPattern": "/^ *> !?\\[!?((?!NOTE)[Nn][Oo][Tt][Ee]|(?!WARNING)[Ww][Aa][Rr][Nn][Ii][Nn][Gg]|(?!CALLOUT)[Cc][Aa][Ll][Ll][Oo][Uu][Tt])\\]\\n|^ *> (?!\\[!)!?\\[!?(NOTE|WARNING|CALLOUT)\\]\\n|^ *> \\[!(NOTE|WARNING|CALLOUT)\\](?!\\n)/gm",
|
2024-08-10 02:14:47 -04:00
|
|
|
|
"searchScope": "text",
|
|
|
|
|
|
},
|
2025-04-03 06:30:55 +02:00
|
|
|
|
{
|
|
|
|
|
|
"name": "comma-after-ie",
|
|
|
|
|
|
"message": "Add comma after 'i.e.'",
|
|
|
|
|
|
"searchPattern": "/\\bi\\.e\\. /g",
|
|
|
|
|
|
"replace": "i.e., ",
|
|
|
|
|
|
"searchScope": "text",
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "comma-after-eg",
|
|
|
|
|
|
"message": "Add comma after 'e.g.'",
|
|
|
|
|
|
"searchPattern": "/\\be\\.g\\. /g",
|
|
|
|
|
|
"replace": "e.g., ",
|
|
|
|
|
|
"searchScope": "text",
|
|
|
|
|
|
},
|
2025-04-28 10:24:04 -04:00
|
|
|
|
{
|
|
|
|
|
|
"name": "short-link",
|
|
|
|
|
|
"message": "Use shortened links for bug links",
|
|
|
|
|
|
"searchPattern": "/https:\\/\\/bugzilla\\.mozilla\\.org\\/show_bug\\.cgi\\?id=/g",
|
|
|
|
|
|
"replace": "https://bugzil.la/",
|
|
|
|
|
|
"searchScope": "all",
|
|
|
|
|
|
},
|
2024-01-15 21:51:13 +00:00
|
|
|
|
],
|
|
|
|
|
|
},
|
2023-10-25 01:30:58 -07:00
|
|
|
|
}
|