Deployment
JAAD builds a static site in dist/:
npm run build
npm run preview
pnpm build
pnpm preview
yarn build
yarn preview
bun run build
bun run preview
Set site to the public URL so JAAD can generate canonical links, the sitemap
and social image URLs. Add base when the site is served from a subpath.
export default defineJaadConfig({
site: 'https://me.github.io',
base: '/my-repo',
title: 'My Project',
})
GitHub Pages
Select GitHub Actions as the Pages source, then add:
# .github/workflows/deploy.yml
name: Deploy
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: withastro/action@v6
# with:
# path: . # the Astro project, if not the root
# node-version: 24
# package-manager: npm@latest
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v5
Other hosts
For Netlify, Vercel, Cloudflare Pages or another static host, use
npm run build as the build command and dist as the publish directory.
Generated files
In addition to the pages, the build writes:
sitemap-index.xmlwhensiteis set;<routeBase>/search-index.jsonfor search;<routeBase>/llms.txtas a plain-text page index;<routeBase>/**.mdfor raw Markdown routes.