Plugins
Quartz's functionality is provided by a collection of first-party community plugins. Each plugin can be enabled, disabled, and configured via quartz.config.yaml. See Configuration for details on how to manage plugins.
Internal vs Community Plugins
Quartz has two kinds of plugins:
- Community plugins are standalone repositories under
quartz-community. In TS overrides, they useExternalPlugin.X()(imported from.quartz/plugins). - Internal plugins are built into Quartz core (Assets, Static, ComponentResources, NotFoundPage). In TS overrides, they use
Plugin.X()(imported from./quartz/plugins).
Plugin types
Quartz plugins fall into several categories:
- Transformers process content during the build, e.g. parsing frontmatter, highlighting syntax, or resolving links.
- Filters decide which content files to include or exclude from the output.
- Page Types generate HTML pages — one per content file, folder, tag, canvas, or bases view.
- Components render UI elements in the page layout (sidebars, headers, footers, etc.).
First-party plugins
filters:
and:
- file.ext == "md"
- file.inFolder("plugins")
- "!file.name.startsWith('index')"
- "!file.name.contains('Demo')"
- "!file.name.contains('Static')"
- "!file.name.contains('Assets')"
- "!file.name.contains('ComponentResources')"
- "!file.name.contains('NotFoundPage')"
formulas:
category: |
if(file.hasTag("plugin/transformer"), "Transformer",
if(file.hasTag("plugin/filter"), "Filter",
if(file.hasTag("plugin/pageType"), "Page Type",
if(file.hasTag("plugin/emitter"), "Emitter",
if(file.hasTag("plugin/component"), "Component",
"Other")))))
properties:
title:
displayName: Plugin
repository:
displayName: Repository
enabled:
displayName: Enabled
required:
displayName: Required
description:
displayName: Description
views:
- type: table
name: All Plugins
groupBy:
property: formula.category
direction: ASC
order:
- title
- repository
- enabled
- required
- description
sort:
- property: formula.category
direction: ASC
- property: title
direction: ASC
- type: table
name: Transformers
filters:
and:
- file.hasTag("plugin/transformer")
order:
- title
- repository
- enabled
- required
- description
sort:
- property: title
direction: ASC
- type: table
name: Filters
filters:
and:
- file.hasTag("plugin/filter")
order:
- title
- repository
- enabled
- required
- description
sort:
- property: title
direction: ASC
- type: table
name: Page Types
filters:
and:
- file.hasTag("plugin/pageType")
order:
- title
- repository
- enabled
- required
- description
sort:
- property: title
direction: ASC
- type: table
name: Emitters
filters:
and:
- file.hasTag("plugin/emitter")
order:
- title
- repository
- enabled
- required
- description
sort:
- property: title
direction: ASC
- type: table
name: Components
filters:
and:
- file.hasTag("plugin/component")
order:
- title
- repository
- enabled
- required
- description
sort:
- property: title
direction: ASC
Multi-category plugins
Some plugins span multiple categories. TableOfContents is both a transformer and a component. EncryptedPages is a transformer, emitter, and component. They appear in each relevant category above.