Configuration
Complete reference for all options available in tulip.toml.
[site]
Required. Site metadata available in templates via {{ site.* }}. Any field you add becomes a template variable.
| Option | Required | Description |
|---|---|---|
name | Yes | Site name, used in templates and plugin context |
base_url | Yes | Canonical base URL (no trailing slash) |
description | No | Site description for meta tags |
* | No | Any custom field — available as {{ site.field }} |
[site]
name = "My Site"
base_url = "https://example.com"
description = "A site built with tulip"
author = "Jane Doe"
github = "https://github.com/janedoe"[build]
Controls the build output.
| Option | Default | Description |
|---|---|---|
target | "dist" | Output directory for the built site |
auto_clean | true | Remove the output directory before each build |
[build]
target = "dist"
auto_clean = true[build.clean_urls]
Controls clean URL generation. When enabled, about.tulip generates about/index.html instead of about.html, so URLs look like /about/ instead of /about.html.
| Option | Default | Description |
|---|---|---|
enabled | true | Generate clean URLs |
exclude | [] | File stems to exclude (generate .html directly) |
Files named index.tulip always generate index.html regardless of this setting.
[build.clean_urls]
enabled = true
exclude = ["404"]With this config, 404.tulip generates 404.html (required by GitHub Pages), while all other pages use clean URLs.
[dev]
Settings for the development server started by tulip serve.
| Option | Default | Description |
|---|---|---|
port | 3000 | Port for the dev server |
watch | true | Watch files and trigger live reload on changes |
[dev]
port = 3000
watch = true[minify]
Enables HTML minification via minify-html. Applied as the final step after all plugins.
| Option | Default | Description |
|---|---|---|
enabled | true | Enable HTML minification |
[minify]
enabled = true[[plugins]]
Declare plugins installed in the plugins/ directory. Plugins execute in the order they appear.
| Option | Required | Description |
|---|---|---|
name | Yes | Plugin directory name under plugins/ |
source | No | GitHub URL for tulip install. Append @tag to pin a version. |
config | No | Key-value pairs to override plugin defaults |
[[plugins]]
name = "seo"
source = "https://github.com/user/tulip-plugin-seo@v0.1.0"
config = { site_name = "My Site" }
[[plugins]]
name = "analytics"
source = "https://github.com/user/tulip-plugin-analytics@v0.2.0"
config = { id = "G-XXXXX" }Full example
[site]
name = "My Blog"
base_url = "https://blog.example.com"
description = "Personal blog about Rust and web dev"
[build]
target = "dist"
auto_clean = true
[build.clean_urls]
exclude = ["404"]
[dev]
port = 8080
watch = true
[minify]
enabled = true
[[plugins]]
name = "tailwind"
source = "https://github.com/eduardostuart/tulip-tailwind@v0.1.0"
[[plugins]]
name = "seo"
source = "https://github.com/user/tulip-plugin-seo@v0.1.0"
config = { site_name = "My Blog", og_image = "/images/og.png" }