mirror of
https://github.com/facebook/docusaurus.git
synced 2025-04-28 17:57:48 +02:00
177 lines
5.5 KiB
Text
177 lines
5.5 KiB
Text
---
|
|
id: introduction
|
|
description: Docusaurus uses MDX. Find out more about Docusaurus-specific features when writing Markdown.
|
|
slug: /markdown-features
|
|
---
|
|
|
|
# Markdown Features
|
|
|
|
import BrowserWindow from '@site/src/components/BrowserWindow';
|
|
|
|
Docusaurus uses **[Markdown](https://commonmark.org/)** as its main content authoring format.
|
|
|
|
:::tip Learn Markdown
|
|
|
|
You can [learn Markdown in 10 minutes](https://commonmark.org/help/).
|
|
|
|
:::
|
|
|
|
Docusaurus uses modern tooling to help you create **interactive documentation**.
|
|
|
|
The **[MDX](https://mdxjs.com/)** compiler transforms **Markdown files to React components**, and allows you to use JSX in your Markdown content. This enables you to easily interleave React components within your content, and create delightful learning experiences.
|
|
|
|
:::tip Use the MDX Playground
|
|
|
|
The **[MDX playground](https://mdxjs.com/playground/)** is your new best friend!
|
|
|
|
It is a very helpful debugging tool that shows how the MDX compiler transforms Markdown to React.
|
|
|
|
**Options**: select the right format (MDX or CommonMark) and the following plugins Docusaurus uses: `remark-gfm`, `remark-directive`, `rehype-raw`.
|
|
|
|
:::
|
|
|
|
## MDX vs. CommonMark {#mdx-vs-commonmark}
|
|
|
|
Docusaurus compiles both `.md` and `.mdx` files to React components using the MDX compiler, but **the syntax can be interpreted differently** depending on your settings.
|
|
|
|
The MDX compiler supports [2 formats](https://mdxjs.com/packages/mdx/#optionsformat):
|
|
|
|
- The [MDX format](https://mdxjs.com/docs/what-is-mdx/): a powerful parser allowing the usage of JSX
|
|
- The [CommonMark format](https://commonmark.org/): a standard-compliant Markdown parser that does not allow the usage of JSX
|
|
|
|
By default, **Docusaurus v3 uses the MDX format for all files** (including `.md` files) for historical reasons.
|
|
|
|
It is possible to **opt-in for CommonMark** using the [`siteConfig.markdown.format`](../../api/docusaurus.config.js.mdx#markdown) setting or the `format: md` front matter.
|
|
|
|
:::tip how to use CommonMark
|
|
|
|
If you plan to use CommonMark, we recommend the [`siteConfig.markdown.format: 'detect'`](../../api/docusaurus.config.js.mdx#markdown) setting. The appropriate format will be selected automatically, based on file extensions:
|
|
|
|
- `.md` files will use the CommonMark format
|
|
- `.mdx` files will use the MDX format
|
|
|
|
:::
|
|
|
|
## Standard features {#standard-features}
|
|
|
|
Markdown is a syntax that enables you to write formatted content in a readable syntax.
|
|
|
|
```md
|
|
### My Doc Section
|
|
|
|
Hello world message with some **bold** text, some _italic_ text, and a [link](/)
|
|
|
|

|
|
```
|
|
|
|
```mdx-code-block
|
|
<BrowserWindow>
|
|
|
|
<h3>My Doc Section</h3>
|
|
|
|
Hello world message with some **bold** text, some _italic_ text and a [link](/)
|
|
|
|

|
|
|
|
</BrowserWindow>
|
|
```
|
|
|
|
<details>
|
|
|
|
<summary>Markdown is declarative</summary>
|
|
|
|
Some may assume a 1-1 correlation between Markdown and HTML, e.g., `` will always become `<img src="/img/docusaurus.png" alt="Preview" />`, as-is. However, _that is not the case_.
|
|
|
|
The Markdown syntax `` only declaratively tells Docusaurus that an image needs to be inserted here, but we may do other things like transforming a [file path to URL path](./markdown-features-assets.mdx#images), so the generated markup may differ from the output of other Markdown renderers, or a naïve hand-transcription to the equivalent JSX/HTML code.
|
|
|
|
In general, you should only assume the _semantics_ of the markup (` ``` ` fences become [code blocks](./markdown-features-code-blocks.mdx); `>` becomes [quotes](#quotes), etc.), but not the actual compiled output.
|
|
|
|
</details>
|
|
|
|
## Front matter {#front-matter}
|
|
|
|
Front matter is used to add metadata to your Markdown file. All content plugins have their own front matter schema, and use the front matter to enrich the default metadata inferred from the content or other configuration.
|
|
|
|
Front matter is provided at the very top of the file, enclosed by three dashes `---`. The content is parsed as [YAML](https://yaml.org/spec/1.2.2/).
|
|
|
|
```md
|
|
---
|
|
title: My Doc Title
|
|
more_data:
|
|
- Can be provided
|
|
- as: objects
|
|
or: arrays
|
|
---
|
|
```
|
|
|
|
:::info
|
|
|
|
The API documentation of each official plugin lists the supported attributes:
|
|
|
|
- [Docs front matter](../../api/plugins/plugin-content-docs.mdx#markdown-front-matter)
|
|
- [Blog front matter](../../api/plugins/plugin-content-blog.mdx#markdown-front-matter)
|
|
- [Pages front matter](../../api/plugins/plugin-content-pages.mdx#markdown-front-matter)
|
|
|
|
:::
|
|
|
|
## Quotes {#quotes}
|
|
|
|
Markdown quotes are beautifully styled:
|
|
|
|
```md
|
|
> Easy to maintain open source documentation websites.
|
|
>
|
|
> — Docusaurus
|
|
```
|
|
|
|
<BrowserWindow>
|
|
|
|
> Easy to maintain open source documentation websites.
|
|
>
|
|
> — Docusaurus
|
|
|
|
</BrowserWindow>
|
|
|
|
## Details {#details}
|
|
|
|
Markdown can embed HTML elements, and [`details`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) HTML elements are beautifully styled:
|
|
|
|
```md
|
|
### Details element example
|
|
|
|
<details>
|
|
<summary>Toggle me!</summary>
|
|
<div>
|
|
<div>This is the detailed content</div>
|
|
<br/>
|
|
<details>
|
|
<summary>
|
|
Nested toggle! Some surprise inside...
|
|
</summary>
|
|
<div>😲😲😲😲😲</div>
|
|
</details>
|
|
</div>
|
|
</details>
|
|
```
|
|
|
|
```mdx-code-block
|
|
<BrowserWindow>
|
|
|
|
<h3>Details element example</h3>
|
|
|
|
<details>
|
|
<summary>Toggle me!</summary>
|
|
<div>
|
|
<div>This is the detailed content</div>
|
|
<br/>
|
|
<details>
|
|
<summary>
|
|
Nested toggle! Some surprise inside...
|
|
</summary>
|
|
<div>😲😲😲😲😲</div>
|
|
</details>
|
|
</div>
|
|
</details>
|
|
|
|
</BrowserWindow>
|
|
```
|