Plugins
Plugins são os blocos de construção de recursos de um site do Docusaurus 2. Cada plugin lida com seu próprio recurso. Plugins podem funcionar e ser distribuídos como parte do bundle através de presets.
#
Plugins disponíveisMantemos uma lista de plugins oficiais, mas a comunidade também criou alguns plugins não oficiais.
#
Instalando um pluginUm plugin geralmente é um pacote npm, então você os instala como outros pacotes npm usando npm.
- npm
- Yarn
npm install --save docusaurus-plugin-name
yarn add docusaurus-plugin-name
Em seguida, adicione-o ao seu site na opção plugins
do docusaurus.config.js
:
module.exports = { // ... plugins: ['@docusaurus/plugin-content-pages'],};
O Docusaurus também pode carregar plugins do seu diretório local, você pode fazer algo assim:
const path = require('path');
module.exports = { // ... plugins: [path.resolve(__dirname, '/path/to/docusaurus-local-plugin')],};
#
Configurando pluginsPara o uso mais básico de plugins, você pode fornecer apenas o nome do plugin ou o caminho absoluto para o plugin.
No entanto, plugins podem ter opções especificadas envolvendo o nome e um objeto de opções em um array dentro de sua configuração. Este estilo é geralmente chamado de Babel Style
.
module.exports = { // ... plugins: [ [ '@docusaurus/plugin-xxx', { /* options */ }, ], ],};
Exemplo:
module.exports = { plugins: [ // Basic usage. '@docusaurus/plugin-google-analytics',
// With options object (babel style) [ '@docusaurus/plugin-sitemap', { changefreq: 'weekly', }, ], ],};
#
Plugins de multi-instância e ids de pluginTodos os plugins de conteúdo do Docusaurus suportam vários plugins.
O plugin Docs tem documentação adicional multi-instância
É necessário atribuir um id exclusivo para cada instância do plugin.
Por padrão, o Id do plugin é default
.
module.exports = { plugins: [ [ '@docusaurus/plugin-xxx', { id: 'plugin-xxx-1', // other options }, ], [ '@docusaurus/plugin-xxx', { id: 'plugin-xxx-2', // other options }, ], ],};
note
No máximo, uma instância de plugin pode ser a "instância padrão do plugin", omitindo o atributo id
ou usando id: 'default'
.
#
Design dos pluginsA implementação do sistema de plug-ins pelo Docusaurus nos fornece uma maneira conveniente de entrar no ciclo de vida do site para modificar o que acontece durante o desenvolvimento/construção, o que envolve (mas não se limita a) estender a configuração do webpack, modificar os dados que estão sendo carregados e criar novos componentes a serem usados em uma página.
#
Criando pluginsUm plugin é uma função que recebe dois parâmetros: context
e options
.
Ele retorna um objeto de instância de plugin, contendo APIs de ciclo de vida.
Pode ser definido como uma função ou um módulo.
#
Definição funcionalVocê pode usar um plugin como uma função, diretamente no arquivo de configuração do Docusaurus:
module.exports = { // ... plugins: [ // highligh-start function myPlugin(context, options) { // ... return { name: 'my-plugin', async loadContent() { // ... }, async contentLoaded({content, actions}) { // ... }, /* other lifecycle API */ }; }, ],};
#
Definição do móduloVocê pode usar um plugin como módulo, carregando-o a partir de um arquivo separado ou pacote NPM:
module.exports = { // ... plugins: [ // without options: './my-plugin', // or with options: ['./my-plugin', options], ],};
Então na pasta my-plugin
você pode criar um index.js como esse
module.exports = function myPlugin(context, options) { // ... return { name: 'my-plugin', async loadContent() { /* ... */ }, async contentLoaded({content, actions}) { /* ... */ }, /* other lifecycle API */ };};
context
#
context
é plugin-agnostic, e o mesmo objeto será passado para todos os plugins usados em um site do Docusaurus. O objeto context
contém os seguintes campos:
interface LoadContext { siteDir: string; generatedFilesDir: string; siteConfig: DocusaurusConfig; outDir: string; baseUrl: string;}
options
#
options
é o segundo parâmetro opcional quando os plugins são usados. options
são específicas do plugin e são especificadas pelos usuários quando os usam em docusaurus.config.js
. Alternativamente, se a predefinição contiver o plugin, a predefinição estará encarregada de passar as opções corretas para o plugin. Cabe a cada plugin definir quais opções são necessárias.
#
Valor retornadoO valor do objeto retornado deve implementar as APIs do ciclo de vida.