2020-11-30 08:07:08 -05:00
---
id: plugin-content-docs
title: '📦 plugin-content-docs'
slug: '/api/plugins/@docusaurus/plugin-content-docs'
---
2020-12-30 11:03:25 -05:00
Provides the [Docs ](../../guides/docs/docs-introduction.md ) functionality and is the default docs plugin for Docusaurus.
2020-11-30 08:07:08 -05:00
2021-03-19 06:00:41 -04:00
## Installation {#installation}
2020-11-30 08:07:08 -05:00
```bash npm2yarn
npm install --save @docusaurus/plugin -content-docs
```
:::tip
If you have installed `@docusaurus/preset-classic` , you don't need to install it as a dependency. You can also configure it through the [classic preset options ](presets.md#docusauruspreset-classic ) instead of doing it like below.
:::
2021-03-19 06:00:41 -04:00
## Configuration {#configuration}
2020-11-30 08:07:08 -05:00
```js title="docusaurus.config.js"
module.exports = {
plugins: [
[
'@docusaurus/plugin-content-docs',
{
/**
* Path to data on filesystem relative to site dir.
*/
path: 'docs',
/**
2021-01-29 09:35:25 -05:00
* Base url to edit your site.
* Docusaurus will compute the final editUrl with "editUrl + relativeDocPath"
2020-11-30 08:07:08 -05:00
*/
editUrl: 'https://github.com/facebook/docusaurus/edit/master/website/',
/**
2021-06-16 05:04:40 -04:00
* For advanced cases, compute the edit url for each Markdown file yourself.
2021-01-29 09:35:25 -05:00
*/
2021-02-17 05:48:33 -05:00
editUrl: function ({
locale,
version,
versionDocsDirPath,
docPath,
permalink,
}) {
2021-01-29 09:35:25 -05:00
return `https://github.com/facebook/docusaurus/edit/master/website/${versionDocsDirPath}/${docPath}` ;
},
/**
* Useful if you commit localized files to git.
2021-06-16 05:04:40 -04:00
* When Markdown files are localized, the edit url will target the localized file,
2021-01-29 09:35:25 -05:00
* instead of the original unlocalized file.
* Note: this option is ignored when editUrl is a function
*/
editLocalizedFiles: false,
/**
* Useful if you don't want users to submit doc pull-requests to older versions.
2020-12-28 04:25:47 -05:00
* When docs are versioned, the edit url will link to the doc
* in current version, instead of the versioned doc.
2021-01-29 09:35:25 -05:00
* Note: this option is ignored when editUrl is a function
2020-12-28 04:25:47 -05:00
*/
editCurrentVersion: false,
/**
2020-11-30 08:07:08 -05:00
* URL route for the docs section of your site.
* *DO NOT* include a trailing slash.
2020-12-22 10:25:33 -05:00
* INFO: It is possible to set just `/` for shipping docs without base path.
2020-11-30 08:07:08 -05:00
*/
routeBasePath: 'docs',
include: ['**/*.md', '**/*.mdx'], // Extensions to include.
/**
* Path to sidebar configuration for showing a list of markdown pages.
*/
2021-04-15 10:20:11 -04:00
sidebarPath: 'sidebars.js',
/**
* Function used to replace the sidebar items of type "autogenerated"
* by real sidebar items (docs, categories, links...)
*/
2021-04-21 12:35:03 -04:00
sidebarItemsGenerator: async function ({
defaultSidebarItemsGenerator, // useful to re-use/enhance default sidebar generation logic from Docusaurus
numberPrefixParser, // numberPrefixParser configured for this plugin
item, // the sidebar item with type "autogenerated"
version, // the current version
docs, // all the docs of that version (unfiltered)
2021-04-21 06:06:06 -04:00
}) {
2021-04-21 12:35:03 -04:00
// Use the provided data to generate a custom sidebar slice
return [
{type: 'doc', id: 'intro'},
{
type: 'category',
label: 'Tutorials',
items: [
{type: 'doc', id: 'tutorial1'},
{type: 'doc', id: 'tutorial2'},
],
},
];
2021-04-15 10:20:11 -04:00
},
2020-11-30 08:07:08 -05:00
/**
2021-04-21 06:06:06 -04:00
* The Docs plugin supports number prefixes like "01-My Folder/02.My Doc.md".
* Number prefixes are extracted and used as position to order autogenerated sidebar items.
* For conveniency, number prefixes are automatically removed from the default doc id, name, title.
* This parsing logic is configurable to allow all possible usecases and filename patterns.
* Use "false" to disable this behavior and leave the docs untouched.
*/
numberPrefixParser: function (filename) {
// Implement your own logic to extract a potential number prefix
const numberPrefix = findNumberPrefix(filename);
// Prefix found: return it with the cleaned filename
if (numberPrefix) {
return {
numberPrefix,
filename: filename.replace(prefix, ''),
};
}
// No number prefix found
return {numberPrefix: undefined, filename};
},
/**
2020-11-30 08:07:08 -05:00
* Theme components used by the docs pages
*/
docLayoutComponent: '@theme/DocPage',
docItemComponent: '@theme/DocItem',
/**
* Remark and Rehype plugins passed to MDX
*/
remarkPlugins: [
/* require('remark-math') */
],
rehypePlugins: [],
/**
* Custom Remark and Rehype plugins passed to MDX before
* the default Docusaurus Remark and Rehype plugins.
*/
beforeDefaultRemarkPlugins: [],
beforeDefaultRehypePlugins: [],
/**
* Whether to display the author who last updated the doc.
*/
showLastUpdateAuthor: false,
/**
* Whether to display the last date the doc was updated.
*/
showLastUpdateTime: false,
/**
* By default, versioning is enabled on versioned sites.
* This is a way to explicitly disable the versioning feature.
2021-06-24 12:04:16 -04:00
* This will only include the "current" version (the `/docs` directory)
2020-11-30 08:07:08 -05:00
*/
disableVersioning: false,
/**
2021-06-24 12:04:16 -04:00
* Include the "current" version of your docs (the `/docs` directory)
* Tip: turn it off if the current version is a work-in-progress, not ready to be published
2020-11-30 08:07:08 -05:00
*/
2021-06-24 12:04:16 -04:00
includeCurrentVersion: true,
2020-11-30 08:07:08 -05:00
/**
* The last version is the one we navigate to in priority on versioned sites
* It is the one displayed by default in docs navbar items
* By default, the last version is the first one to appear in versions.json
* By default, the last version is at the "root" (docs have path=/docs/myDoc)
* Note: it is possible to configure the path and label of the last version
* Tip: using lastVersion: 'current' make sense in many cases
*/
lastVersion: undefined,
/**
* The docusaurus versioning defaults don't make sense for all projects
2021-06-24 12:04:16 -04:00
* This gives the ability customize the properties of each version independantly
* - label: the label of the version
* - path: the route path of the version
* - banner: the banner to show at the top of a doc of that version: "none" | "unreleased" | "unmaintained"
2020-11-30 08:07:08 -05:00
*/
versions: {
/*
Example configuration:
current: {
label: 'Android SDK v2.0.0 (WIP)',
path: 'android-2.0.0',
2021-06-24 12:04:16 -04:00
banner: 'none',
2020-11-30 08:07:08 -05:00
},
'1.0.0': {
label: 'Android SDK v1.0.0',
path: 'android-1.0.0',
2021-06-24 12:04:16 -04:00
banner: 'unmaintained',
2020-11-30 08:07:08 -05:00
},
*/
},
/**
* Sometimes you only want to include a subset of all available versions.
* Tip: limit to 2 or 3 versions to improve startup and build time in dev and deploy previews
*/
onlyIncludeVersions: undefined, // ex: ["current", "1.0.0", "2.0.0"]
},
],
],
};
```
2020-12-30 11:03:25 -05:00
2021-03-19 06:00:41 -04:00
## Markdown Frontmatter {#markdown-frontmatter}
2020-12-30 11:03:25 -05:00
2021-06-15 06:04:29 -04:00
Markdown documents can use the following Markdown FrontMatter metadata fields, enclosed by a line `---` on either side:
2020-12-30 11:03:25 -05:00
2021-06-15 06:04:29 -04:00
- `id` : A unique document id. Default value: file path (including folders, without the extension)
- `title` : The text title of your document. Used for the page metadata and as a fallback value in multiple places (sidebar, next/previous buttons...). Automatically added at the top of your doc if it does not contain any Markdown title. Default value: Markdown title or doc `id`
- `hide_title` : Whether to hide the title at the top of the doc. It only hides a title declared through the frontmatter, and have no effect on a Markdown title at the top of your document. Default value: `false`
- `hide_table_of_contents` : Whether to hide the table of contents to the right. Default value: `false`
2021-06-16 06:03:46 -04:00
- `sidebar_label` : The text shown in the document sidebar for this document. Default value: `title`
2021-04-15 10:20:11 -04:00
- `sidebar_position` : Permits to control the position of a doc inside the generated sidebar slice, when using `autogenerated` sidebar items. Can be Int or Float.
2021-06-16 06:03:46 -04:00
- `pagination_label` : The text used in the document next/previous buttons for this document. Default value: `sidebar_label` , or `title`
2021-06-15 06:04:29 -04:00
- `parse_number_prefixes` : When a document has a number prefix (`001 - My Doc.md`, `2. MyDoc.md` ...), it is automatically parsed and extracted by the plugin `numberPrefixParser` , and the number prefix is used as `sidebar_position` . Use `parse_number_prefixes: false` to disable number prefix parsing on this doc. Default value: `parse_number_prefixes` plugin option
- `custom_edit_url` : The URL for editing this document. Default value: computed using the `editUrl` plugin options
2021-03-09 08:59:32 -05:00
- `keywords` : Keywords meta tag for the document page, for search engines
2021-06-15 06:04:29 -04:00
- `description` : The description of your document, which will become the `<meta name="description" content="..."/>` and `<meta property="og:description" content="..."/>` in `<head>` , used by search engines. Default value: the first line of Markdown content
- `image` : Cover or thumbnail image that will be used when displaying the link to your post.
- `slug` : Allows to customize the document url (`/< routeBasePath > /< slug > `). Support multiple patterns: `slug: my-doc` , `slug: /my/path/myDoc` , `slug: /` .
2020-12-30 11:03:25 -05:00
Example:
```yml
---
id: doc-markdown
2021-06-16 06:03:46 -04:00
title: Docs Markdown Features
2020-12-30 11:03:25 -05:00
hide_title: false
hide_table_of_contents: false
2021-06-16 06:03:46 -04:00
sidebar_label: Markdown
sidebar_position: 3
pagination_label: Markdown features
2020-12-30 11:03:25 -05:00
custom_edit_url: https://github.com/facebook/docusaurus/edit/master/docs/api-doc-markdown.md
description: How do I find you when I cannot solve this problem
keywords:
- docs
- docusaurus
image: https://i.imgur.com/mErPwqL.png
2021-01-19 11:26:31 -05:00
slug: /myDoc
2020-12-30 11:03:25 -05:00
---
2021-06-16 06:03:46 -04:00
# Markdown Features
2020-12-30 11:03:25 -05:00
My Document Markdown content
```
2021-01-19 11:26:31 -05:00
2021-03-19 06:00:41 -04:00
## i18n {#i18n}
2021-01-19 11:26:31 -05:00
Read the [i18n introduction ](../../i18n/i18n-introduction.md ) first.
2021-03-19 06:00:41 -04:00
### Translation files location {#translation-files-location}
2021-01-19 11:26:31 -05:00
- **Base path**: `website/i18n/<locale>/docusaurus-plugin-content-docs`
- **Multi-instance path**: `website/i18n/<locale>/docusaurus-plugin-content-docs-<pluginId>`
2021-06-20 15:16:17 -04:00
- **JSON files**: extracted with [`docusaurus write-translations` ](../../cli.md#docusaurus-write-translations-sitedir )
2021-01-19 11:26:31 -05:00
- **Markdown files**: `website/i18n/<locale>/docusaurus-plugin-content-docs/<version>`
2021-03-19 06:00:41 -04:00
### Example file-system structure {#example-file-system-structure}
2021-01-19 11:26:31 -05:00
```bash
website/i18n/< locale > /docusaurus-plugin-content-docs
│
│ # translations for website/docs
├── current
│ ├── api
│ │ └── config.md
│ └── getting-started.md
├── current.json
│
│ # translations for website/versioned_docs/version-1.0.0
├── version-1.0.0
│ ├── api
│ │ └── config.md
│ └── getting-started.md
└── version-1.0.0.json
```