1
0
mirror of https://github.com/squidfunk/mkdocs-material.git synced 2024-11-24 15:40:15 +01:00
mkdocs-material/docs/plugins/group.md
2023-09-14 19:09:18 +02:00

122 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Built-in group plugin
icon: material/format-list-group
---
# Built-in group plugin
The group plugin allows to group plugins into logical units to conditionally
enable or disable them for specific environments with the use of
[environment variables][mkdocs.env], e.g., to only enable a subset of
plugins when [building your project] during continuous integration (CI).
[building your project]: ../creating-your-site.md#building-your-site
## Objective
### How it works
The plugin conditionally and lazily loads all plugins that are part of a group
if and only if the group is enabled, which means that the plugin doesn't add any
overhead when the group is disabled. It also means that the grouped plugins
only need to be installed when the group is enabled.
The plugins that are part of the group are executed in the same order as if
they were defined at the top-level in the list of [`plugins`][mkdocs.plugins].
Thus, order is preserved and deterministic.
### When to use it
Whenever you're using multiple plugins that are only required in specific
environments, e.g., when building your project during continuous integration
(CI), the plugin is the perfect utility for making configuration simpler, as it
removes the need for splitting configuration into multiple files.
It can be used with any built-in or third-party plugin.
## Configuration
<!-- md:version 9.3.0 -->
<!-- md:plugin [group] built-in -->
<!-- md:flag multiple -->
<!-- md:flag experimental -->
As with all [built-in plugins], getting started with the group plugin is
straightforward. Just add the following lines to `mkdocs.yml`, and start
splitting plugins into logical units:
``` yaml
plugins:
- group
```
The group plugin is built into Material for MkDocs and doesn't need to be
installed.
[group]: group.md
[built-in plugins]: index.md
### General
The following settings are available:
---
#### <!-- md:setting config.enabled -->
<!-- md:version 9.2.0 -->
<!-- md:default `false` -->
Use this setting to enable or disable the plugin when [building your project].
The plugin behaves differently than all other built-in plugins __it is
disabled by default__. To enable a group, use:
``` yaml
plugins:
- group:
enabled: !ENV CI # (1)!
```
1. If you only want to use the group plugin for better organization and
always want to enable the plugins that are part of it, use:
``` yaml
plugins:
- group:
enabled: true
```
The decision to disable the plugin by default was made to simplify the usage
of environment variables, as it removes the need to provide a default value for
an environment variable.
Now, when [building your project], you can enable a group by setting the
[environment variable][mkdocs.env]:
``` sh
CI=true mkdocs build
```
[building your project]: ../creating-your-site.md#building-your-site
---
#### <!-- md:setting config.plugins -->
<!-- md:version 9.2.0 -->
<!-- md:default none -->
Use this setting to list the plugins that are part of the group. The syntax is
exactly the same as for the [`plugins`][mkdocs.plugins] setting, so you can
simply copy the list of plugins that you want to group, e.g:
``` yaml
plugins:
- group:
plugins:
- optimize
- minify
```
The plugins mentioned here are just used for illustration purposes.