πŸ““ docs/configuration.md by @matthieuG β˜†

Quartz is meant to be extremely configurable, even if you don’t know any coding. Most of the configuration you should need can be done by just editing quartz.config.ts or changing [[the layout]] in quartz.layout.ts.

[!tip] If you edit Quartz configuration using a text-editor that has TypeScript language support like VSCode, it will warn you when you you’ve made an error in your configuration, helping you avoid configuration mistakes!

The configuration of Quartz can be broken down into two main parts:

const config: QuartzConfig = {
  configuration: { ... },
  plugins: { ... },
}

General Configuration

This part of the configuration concerns anything that can affect the whole site. The following is a list breaking down all the things you can configure:

Plugins

You can think of Quartz plugins as a series of transformations over content.

β₯… [[quartz transform pipeline.png]]

plugins: {
  transformers: [...],
  filters: [...],
  emitters: [...],
}

You can customize the behaviour of Quartz by adding, removing and reordering plugins in the transformers, filters and emitters fields.

[!note] Each node is modified by every transformer in order. Some transformers are position sensitive, so you may need to pay particular attention to whether they need to come before or after certain other plugins.

You should take care to add the plugin to the right entry corresponding to its plugin type. For example, to add the [[ExplicitPublish]] plugin (a [[Filter]]), you would add the following line:

filters: [
  ...
  Plugin.ExplicitPublish(),
  ...
],

To remove a plugin, you should remove all occurrences of it in the quartz.config.ts.

To customize plugins further, some plugins may also have their own configuration settings that you can pass in. If you do not pass in a configuration, the plugin will use its default settings.

For example, the [[Latex]] plugin allows you to pass in a field specifying the renderEngine to choose between Katex and MathJax.

transformers: [
  Plugin.FrontMatter(), // use default options
  Plugin.Latex({ renderEngine: "katex" }), // set some custom options
]

Some plugins are included by default in the quartz.config.ts, but there are more available.

You can see a list of all plugins and their configuration options [[here]].

If you’d like to make your own plugins, see the [[making custom plugins]] guide.

Fonts

Fonts can be specified as a string or a FontSpecification:

// string
typography: {
  header: "Schibsted Grotesk",
  ...
}

// FontSpecification
typography: {
  header: {
    name: "Schibsted Grotesk",
    weights: [400, 700],
    includeItalic: true,
  },
  ...
}