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 use ExternalPlugin.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.

Built with LogoFlowershow