Skip to content

Commands Reference v1

just orchestrates everything. bun runs scripts and installs dependencies. npm, yarn, and pnpm are forbidden — bun.lock integrity depends on it.

Just

The root justfile chains submodules: mod docs, mod test, mod baseline, mod deploy, mod pr. List recipes: just --list (all) or just --list docs (per submodule).

Development

CommandWhat
just devVite dev server
just buildProduction static build → target/build/
just previewServe production build
just checksvelte-check + oxfmt --check + lefthook validate
just lintoxlint + stylelint + knip + eslint
just fmtoxfmt --write + just --fmt
just spellcspell + markdownlint --fix
just ciaudit + fmt + check + spell + lint + build (full local CI)
just cleanRemove target/, .svelte-kit/, node_modules/

Testing

CommandWhat
just tuFast unit tests (VITEST_FAST=true)
just tiPlaywright integration tests (local, chrome-desktop)
just tcVitest with v8 coverage
just taAll tests: unit + integration + coverage
just test lhciLighthouse CI
just test bundleBundle budget check
just bsUpdate Playwright snapshots (current OS)
just baseline ciUpdate snapshots via Docker (Linux/chrome-desktop for CI parity)
just bbUpdate bundle baseline (misc/bundle-baseline.json)

Authoring

CommandWhat
just new "Post Title"Scaffold blog post in content/blog/YYYY/<date>-<slug>.md

Docs (this site)

CommandWhat
just docs devVitePress dev server
just docs buildBuild docs to docs/.vitepress/dist/
just docs previewPreview built docs

Deploy (Cloudflare Pages)

CommandWhat
just deploy listList CF Pages projects in the account
just deploy create <name>Create new CF Pages project (wrangler)
just deploy delete <name>Remove CF Pages project

Bun

CommandWhat
bun installResolve deps, write/update bun.lock
bun auditSecurity advisory scan
bun --cwd docs installInstall docs-only deps (vitepress)
bun run <script>Run npm script from package.json
bun --bun <cmd>Force Bun runtime when shebang says Node
bunx <cli>Execute CLI without global install (used in lefthook hooks)

Forbidden: npm install, yarn install, pnpm install — they break bun.lock integrity.

Direct npm scripts

The same names also work via bun run <script> from any directory:

ScriptWhat
devvite dev
buildvite build
previewvite preview
checksvelte-kit sync && svelte-check
test:unitFast unit tests
test:unit:coverageVitest with v8 coverage
test:playwrightPlaywright (local config)
test:playwright:productionPlaywright (CI matrix config)
test:lhcibun scripts/run-lhci.mjs
content:diagnosticsMARKDOWN_DEBUG=true vite build (emits target/generated/diagnostics.{md,json})
docs:dev / docs:build / docs:previewDelegate to bun --cwd docs run docs:*

gh (GitHub CLI)

CommandWhat
gh pr create --fillCreate PR using last commit msg as title and body
gh pr comment --body "/gemini review"Trigger Gemini review
gh pr checksLive CI status
gh pr view --webOpen PR in browser

Environment Variables

Variables that affect build, test, and bundle behavior.

VariableDefaultWhat it does
ANALYZEfalseEmit target/bundle/stats.{html,json} after build
VITEST_FASTfalseSkip slow UI specs in Vitest
MARKDOWN_DEBUGfalseEmit target/generated/diagnostics.{md,json}
BUILD_DIRtargetBuild output root
BUNDLE_BUDGET_THRESHOLD0.3Max size delta vs baseline (0.3 = 30%)
PLAYWRIGHT_SERVER_COMMANDCustom server for Playwright
PLAYWRIGHT_SERVER_URLCustom server URL for Playwright
PLAYWRIGHT_BASE_URLBase URL for Playwright tests

Markdown component registry

Every Svelte component allowed inside markdown must be registered at config/mdsvex/registry.js. New components require both a registry entry and (usually) a new pass — see extending.md.