plugin-content-docs
优质
小牛编辑
129浏览
2023-12-01
此插件实现了 文档 功能,并且是 Docusaurus 的默认的文档功能插件。
安装
- npm
- Yarn
npm install --save @docusaurus/plugin-content-docs
yarn add @docusaurus/plugin-content-docs
tip
如果你已经安装了 @docusaurus/preset-classic
,则不需要再安装此插件。你也可以通过 classic 预设参数 对其进行配置,而不必像下面这样进行配置。
配置
docusaurus.config.jsmodule.exports = { plugins: [ [ '@docusaurus/plugin-content-docs', { /** * Path to data on filesystem relative to site dir. */ path: 'docs', /** * Base url to edit your site. * Docusaurus will compute the final editUrl with "editUrl + relativeDocPath" */ editUrl: 'https://github.com/facebook/docusaurus/edit/master/website/', /** * For advanced cases, compute the edit url for each markdown file yourself. */ editUrl: function ({ locale, version, versionDocsDirPath, docPath, permalink, }) { return `https://github.com/facebook/docusaurus/edit/master/website/${versionDocsDirPath}/${docPath}`; }, /** * Useful if you commit localized files to git. * When markdown files are localized, the edit url will target the localized file, * 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. * When docs are versioned, the edit url will link to the doc * in current version, instead of the versioned doc. * Note: this option is ignored when editUrl is a function */ editCurrentVersion: false, /** * URL route for the docs section of your site. * *DO NOT* include a trailing slash. * INFO: It is possible to set just `/` for shipping docs without base path. */ routeBasePath: 'docs', include: ['**/*.md', '**/*.mdx'], // Extensions to include. /** * Path to sidebar configuration for showing a list of markdown pages. */ sidebarPath: 'sidebars.js', /** * Function used to replace the sidebar items of type "autogenerated" * by real sidebar items (docs, categories, links...) */ 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) }) { // 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'}, ], }, ]; }, /** * 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}; }, /** * 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. */ disableVersioning: false, /** * Skip the next release docs when versioning is enabled. * This will not generate HTML files in the production build for documents * in `/docs/next` directory, only versioned docs. */ excludeNextVersionDocs: false, /** * 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 * This gives the ability customize the label and path of each version * You may not like that default version */ versions: { /* Example configuration: current: { label: 'Android SDK v2.0.0 (WIP)', path: 'android-2.0.0', }, '1.0.0': { label: 'Android SDK v1.0.0', path: 'android-1.0.0', }, */ }, /** * 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"] }, ], ], };
Markdown Frontmatter
Markdown documents can use the following markdown frontmatter metadata fields, enclosed by a line ---
on either side:
id
: A unique document id. If this field is not present, the document'sid
will default to its file name (without the extension)title
: The title of your document. If this field is not present, the document'stitle
will default to itsid
hide_title
: Whether to hide the title at the top of the doc. By default, it isfalse
hide_table_of_contents
: Whether to hide the table of contents to the right. By default it isfalse
sidebar_label
: The text shown in the document sidebar and in the next/previous button for this document. If this field is not present, the document'ssidebar_label
will default to itstitle
sidebar_position
: Permits to control the position of a doc inside the generated sidebar slice, when usingautogenerated
sidebar items. Can be Int or Float.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 pluginnumberPrefixParser
, and the number prefix is used assidebar_position
. Useparse_number_prefixes: false
to disable number prefix parsing on this doccustom_edit_url
: The URL for editing this document. If this field is not present, the document's edit URL will fall back toeditUrl
from options fields passed todocusaurus-plugin-content-docs
keywords
: Keywords meta tag for the document page, for search enginesdescription
: 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. If this field is not present, it will default to the first line of the contentsimage
: Cover or thumbnail image that will be used when displaying the link to your postslug
: Allows to customize the document url (/<routeBasePath>/<slug>
). Support multiple patterns:slug: my-doc
,slug: /my/path/myDoc
,slug: /
Example:
--- id: doc-markdown title: Markdown Features hide_title: false hide_table_of_contents: false sidebar_label: Markdown :) 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 slug: /myDoc --- My Document Markdown content
i18n
Read the i18n introduction first.
Translation files location
- Base path:
website/i18n/<locale>/docusaurus-plugin-content-docs
- Multi-instance path:
website/i18n/<locale>/docusaurus-plugin-content-docs-<pluginId>
- JSON files: extracted with
docusaurus write-translations
- Markdown files:
website/i18n/<locale>/docusaurus-plugin-content-docs/<version>
Example file-system structure
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