“[One] who works with the door open gets all kinds of interruptions, but [they] also occasionally gets clues as to what the world is and what might be important.” — Richard Hamming
Quartz is a set of tools that helps you publish your digital garden and notes as a website for free.
🔗 Documentation: https://quartz.jzhao.xyz/
- Node.js ≥ 22
- npm ≥ 10.9.2
npm installprebuild runs automatically after install (plugin install + .quartz/plugins/index.ts regeneration).
Preview the site from the content/ vault with live reload.
Fast daily workflow (recommended):
npm run dev- Uses
QUARTZ_FAST_DEV=1and--fastStart - Skips heavy dev-only work like
og-imageand avoids cleaningpublic/on startup - Best for quick edit/preview loops
Production-like local preview:
npm run dev:full- Runs with the full plugin set and normal clean startup behavior
- Use this before release checks if you want local parity with production output
Legacy script (still available):
npm run docsServer starts on default http://localhost:8080. Edit notes under content/; Quartz rebuilds and the browser reloads. Stop with Ctrl+C.
To use another content directory or options, call the CLI directly:
npx quartz build --serve -d path/to/notesUseful flags: --verbose for detailed logs, -o public to change the output folder (default is public).
Produce a static site in public/ (suitable for GitHub Pages, Netlify, Cloudflare Pages, any static host):
npx quartz build -d content- Input: Markdown and assets under
content/(seeignorePatternsinquartz.config.yaml). - Output: static files in
public/. - Deploy by uploading
public/or pointing your host at that folder after CI runs the command.
Before deploying, set configuration.baseUrl in quartz.config.yaml to your real site URL so feeds, SEO, and absolute links are correct.
npm run check # Typecheck + Prettier check
npm run format # Prettier write