SIGN IN SIGN UP
mdn / content UNCLAIMED

The official source for MDN Web Docs content. Home to over 14,000 pages of documentation about HTML, CSS, JS, HTTP, Web APIs, and more.

0 0 1 Markdown
// 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,
"heading-increment": true,
"ul-style": {
"style": "dash",
},
"ul-indent": {
"indent": 2,
},
"no-hard-tabs": {
"spaces_per_tab": 2,
},
"no-duplicate-heading": {
"siblings_only": true,
},
"single-title": {
"front_matter_title": "^\\s*title\\s*[:=]",
},
"no-trailing-punctuation": {
"punctuation": ".,;:",
},
// 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": {
"style": "ordered",
},
// Duplicate with with Prettier
"line-length": false,
"blanks-around-fences": false,
"table-column-style": false,
"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",
"mdn-scrim-inline",
"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",
"var",
],
},
"no-bare-urls": false,
// Produces too many false positives
"no-space-in-emphasis": false,
"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",
"c",
"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",
],
},
// See https://github.com/mdn/content/pull/20026, as macros currently break this
"no-empty-links": false,
"code-block-style": {
"style": "fenced",
},
"emphasis-style": {
"style": "underscore",
},
"strong-style": {
"style": "asterisk",
},
// Disabled, as yari generates link fragments by replacing spaces with underscores, not dashes.
"link-fragments": false,
"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",
],
},
// 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": "\"",
"searchScope": "text",
},
{
"name": "curly-single-quotes",
"message": "Don't use curly single quotes",
"searchPattern": "/|/g",
"replace": "'",
"searchScope": "text",
},
{
"name": "nbsp",
"message": "Don't use no-break spaces",
"searchPattern": "/ /g",
"replace": " ",
"searchScope": "all",
},
{
"name": "m-dash",
"message": "Don't use '--'. Use m-dash — instead",
"search": " -- ",
"replace": " — ",
"searchScope": "text",
},
{
"name": "relative-link",
"message": "Internal links should start with '/'",
"searchPattern": "/([\\(\"])en-US\\/docs/g",
"replace": "$1/en-US/docs",
"searchScope": "text",
},
{
"name": "relative-link-path",
"message": "Don't use relative paths",
"search": "](..",
"searchScope": "text",
},
{
"name": "trailing-spaces",
"message": "Avoid trailing spaces",
"searchPattern": "/ +$/gm",
"replace": "",
"searchScope": "all",
},
{
"name": "double-spaces",
"message": "Avoid double spaces",
"searchPattern": "/([^\\s>]) ([^\\s|])/g",
"replace": "$1 $2",
"searchScope": "text",
},
{
"name": "stuck-definition",
"message": "Character is stuck to definition description marker",
"searchPattern": "/- :(\\w)/g",
"replace": "- : $1",
"searchScope": "text",
},
{
"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": "](/",
"searchScope": "text",
},
{
"name": "incorrect-spelling",
"message": "Incorrect spelling",
"searchPattern": ["/e-mail/ig", "/(w)eb site/ig"],
"replace": ["email", "$1ebsite"],
"searchScope": "all",
},
{
"name": "localhost-links",
"message": "Don't use localhost for links",
"searchPattern": "/\\]\\(https?:\\/\\/localhost:\\d+\\//g",
"replace": "](/",
"searchScope": "text",
},
{
"name": "un-closed-md-link",
"message": "Missing closing bracket ')'",
"searchPattern": "/\\[.*?\\]\\([^ )\\n\"]+(?:[\\n\"]| [^\"']| [\"'].+?[\"'][^)])/gm",
"searchScope": "text",
},
{
"name": "gfm-alert",
"message": "Use the GFM syntax: https://developer.mozilla.org/en-US/docs/MDN/Writing_guidelines/Howto/Markdown_in_MDN#notes_warnings_and_callouts",
"searchPattern": "/^ *> \\*\\*(Note|Warning|Callout):\\*\\*/gm",
"searchScope": "text",
},
{
"name": "bad-gfm-alert",
"message": "Use the correct GFM syntax: `> [!NOTE]`",
// TODO this should use the modifier syntax; until it has better Node support
"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",
"searchScope": "text",
},
{
"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",
},
],
},
}