Minimal site
import Astral.Config
site do
pages "pages"
layouts "layouts" do
default "default.html"
end
endCommon paths
site do
root "."
outdir "dist"
pages "pages"
public "public"
components "components"
endLayouts
layouts "layouts" do
default "default.html"
endUse a .astral layout:
layouts "layouts" do
default "site.astral"
endAssets
assets "assets" do
entry "app.ts"
url_prefix "/assets"
hash true
endDynamic file routes
pages/blog/[slug].astral -> /blog/:slug
pages/docs/[...path].md -> /docs/*pathRead route params from templates and layouts with string keys:
<%= @params["slug"] %>Content collections
collections do
collection :posts, "content/posts" do
permalink "/blog/:slug/"
layout "post.html"
schema do
field :title, :string, required: true
field :date, :date, required: true
field :draft, :boolean, default: false
field :tags, {:array, :string}, default: []
end
end
endPlugins
plugins [
{Astral.Plugin.Feed,
site_url: "https://example.com",
title: "My Blog",
author: "Me",
collection: :posts},
{Astral.Plugin.Sitemap,
site_url: "https://example.com"}
]