Plugins
Plugins are the building blocks of features in a Docusaurus 2 site. Each plugin handles its own individual feature. Plugins may work and be distributed as part of bundle via presets.
Installing a plugin
A plugin is usually a npm package, so you install them like other npm packages using npm.
- npm
- Yarn
Then you add it in your site's docusaurus.config.js
's plugins
option:
Docusaurus can also load plugins from your local directory, you can do something like the following:
Configuring plugins
For the most basic usage of plugins, you can provide just the plugin name or the absolute path to the plugin.
However, plugins can have options specified by wrapping the name and an options object in an array inside your config. This style is usually called Babel Style
.
Example:
Plugins design
Docusaurus' implementation of the plugins system provides us with a convenient way to hook into the website's lifecycle to modify what goes on during development/build, which involves (but not limited to) extending the webpack config, modifying the data being loaded and creating new components to be used in a page.
Creating plugins
A plugin is a module which exports a function that takes two parameters and returns an object when executed.
Module definition
The exported modules for plugins are called with two parameters: context
and options
and returns a JavaScript object with defining the lifecycle APIs.
context
context
is plugin-agnostic and the same object will be passed into all plugins used for a Docusaurus website. The context
object contains the following fields:
options
options
are the second optional parameter when the plugins are used. options
are plugin-specific and are specified by users when they use them in docusaurus.config.js
. Alternatively, if preset contains the plugin, the preset will then be in charge of passing the correct options into the plugin. It is up to individual plugin to define what options it takes.
Return value
The returned object value should implement the lifecycle APIs.
Official plugins
Find the list of official Docusaurus plugins here.
@docusaurus/plugin-content-blog
Provides the Blog feature and is the default blog plugin for Docusaurus.
Installation
- npm
- Yarn
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 instead of doing it like below.
@docusaurus/plugin-content-docs
Provides the Docs functionality and is the default docs plugin for Docusaurus.
Installation
- npm
- Yarn
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 instead of doing it like below.
@docusaurus/plugin-content-pages
The default pages plugin for Docusaurus. The classic template ships with this plugin with default configurations. This plugin provides creating pages functionality.
Installation
- npm
- Yarn
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 instead of doing it like below.
@docusaurus/plugin-google-analytics
The default Google Analytics plugin. It is a JavaScript library for measuring how users interact with your website.
Installation
- npm
- Yarn
tip
If you have installed @docusaurus/preset-classic
, you don't need to install it as a dependency.
Configuration
@docusaurus/plugin-google-gtag
The default Global Site Tag (gtag.js) plugin. It is a JavaScript tagging framework and API that allows you to send event data to Google Analytics, Google Ads, and Google Marketing Platform. This section describes how to configure a Docusaurus site to enable global site tag for Google Analytics.
Installation
- npm
- Yarn
tip
If you have installed @docusaurus/preset-classic
, you don't need to install it as a dependency.
Configuration
@docusaurus/plugin-sitemap
This plugin creates sitemap for your site so that search engine crawlers can crawl your site more accurately.
Installation
- npm
- Yarn
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 instead of doing it like below.
@docusaurus/plugin-ideal-image
Docusaurus Plugin to generate an almost ideal image (responsive, lazy-loading, and low quality placeholder) in the production builds.
- npm
- Yarn
Modify your docusaurus.config.js
Usage
This plugin supports the PNG, GIF and JPG formats only.
Options
Option | Type | Default | Description |
---|---|---|---|
name | string | ideal-img/[name].[hash:hex:7].[width].[ext] | Filename template for output files. |
sizes | array | original size | Specify all widths you want to use. If a specified size exceeds the original image's width, the latter will be used (i.e. images won't be scaled up). |
size | integer | original size | Specify one width you want to use; if the specified size exceeds the original image's width, the latter will be used (i.e. images won't be scaled up) |
min | integer | As an alternative to manually specifying sizes , you can specify min , max and steps , and the sizes will be generated for you. | |
max | integer | See min above | |
steps | integer | 4 | Configure the number of images generated between min and max (inclusive) |
quality | integer | 85 | JPEG compression quality |
@docusaurus/plugin-client-redirects
Docusaurus Plugin to generate client-side redirects.
This plugin will write additional HTML pages to your static site, that redirects the user to your existing Docusaurus pages with JavaScript.
caution
It is better to use server-side redirects whenever possible.
Before using this plugin, you should look if your hosting provider doesn't offer this feature.
Installation
- npm
- Yarn
Configuration
Main usecase: you have /myDocusaurusPage
, and you want to redirect to this page from /myDocusaurusPage.html
:
Second usecase: you have /myDocusaurusPage.html
, and you want to redirect to this page from /myDocusaurusPage
.
For custom redirect logic, provide your own createRedirects
function.
Let's imagine you change the url of an existing page, you might want to make sure the old url still works:
It's possible to use a function to create the redirects for each existing path:
Finally, it's possible to use all options at the same time: