This repo is a single static Astro blog (austinabbott.dev, package name dev-blog), deployed to Cloudflare Pages. There is no backend, database, or other service — the only "service" is the Astro dev/build process. Commands are the npm scripts in package.json (dev/start, build, preview, astro).
- Node:
.nvmrcpins Node24.18.1, which is installed and set as the nvm default. A login shell (bash -lc '...') picks up Node 24 automatically. Astro 7 also works on newer Node 22, so either is fine. - Run dev:
npm run devserves the site athttp://localhost:4321/with hot reload. Editing/adding Markdown undersrc/content/blog/is the core "content authoring" flow and hot-reloads into the blog index and post pages. - Build:
npm run buildrunsastro check(type check) first, thenastro buildintodist/. This is the closest thing to a lint step — there is no ESLint/Prettier configured. - Visual regression:
npm run test:visualruns Playwright screenshot comparisons against baselines intests/visual.spec.ts-snapshots/(requires a prior Chromium install vianpx playwright install chromium). Update baselines withnpm run test:visual:update. - Preview production build:
npm run previewservesdist/(requires a prior build). - Non-obvious:
npm installunder npm 11+ prints a benignallow-scriptswarning thatesbuildandsharpinstall scripts were skipped. This does not break anything —sharpimage optimization works via prebuilt@img/sharp-*platform packages, confirmed by a successfulnpm run build. Do not attempt interactivenpm approve-scripts. - Astro 7 notes for this project: no remark/rehype plugins (Sätteri default Markdown processor is fine), no
src/fetch.ts, and content schemas should importzfromastro/zod(notastro:content).