插件
Plugins are the building blocks of features in a Docusaurus site. 每个插件都有其自己的独立功能。 插件可以通过预设被打包分发。
插件开发
插件是一个接收两个参数的函数:context
及 options
。 它会返回一个插件实例对象(或者一个对象的 Promise)。 你所创建的插件可以是函数或者模块。 For more information, refer to the plugin method references section.
函数定义
你可以在 Docusaurus 配置文件中直接以函数形式声明插件:
docusaurus.config.js
export default {
// ...
plugins: [
async function myPlugin(context, options) {
// ...
return {
name: 'my-plugin',
async loadContent() {
// ...
},
async contentLoaded({content, actions}) {
// ...
},
/* 其他生命周期 API */
};
},
],
};
模块定义
你可以用一个模块路径声明插件,路径应指向一个文件或者一个 npm 包:
docusaurus.config.js
export default {
// ...
plugins: [
// 不带选项:
'./my-plugin',
// 或者带上选项:
['./my-plugin', options],
],
};
然后,你可以在 my-plugin
文件夹中,创建一个 index.js
文件,内容类似如下:
my-plugin/index.js
export default async function myPlugin(context, options) {
// ...
return {
name: 'my-plugin',
async loadContent() {
/* ... */
},
async contentLoaded({content, actions}) {
/* ... */
},
/* other lifecycle API */
};
}
你可以用调试插件的元数据面板查看你的网站上安装的所有插件。
插件有几种类型:
package
:一个你所安装的外部包project
:你在你的项目中创建的插件, 以本地文件路径的形式提供给 Docusauruslocal
:一个用函数形式定义的插件synthetic
:一个 Docusaurus 内部创建的「假插件」,这样我们就能够充分利用我们的模块结构,不要让核心做很多特殊的工作。 你不会在元数据中看到这些插件,因为这是一个实现细节。
你可以用 useDocusaurusContext().siteMetadata.pluginVersions
在客户端获取这些信息。
插件设计
Docusaurus 所实现的插件系统可以让你轻松地在网站的各个生命周期环节更改开发/构建时的行为,包括但不限于扩展 Webpack 配置、修改所加载的数据,以及创建新组件供页面使用。