Repository navigation
Move the frontend from pnpm and Node to Bun - #14
Conversation
Bun installs app/'s packages, runs its scripts and the Playwright runner, as
firsttris/workflows tech-stack.md ("Tooling") asks and as haul and windfenster
already do.
- app/package.json: packageManager bun@1.4.4; the scripts chain `bun run i18n`;
e2e is `bun --bun playwright test` (app/ already is "type": "module"), and
Playwright's web server `bun --bun vite --mode mock`.
- app/bun.lock converted from pnpm-lock.yaml by `bun install`: the same 378
package versions. bunfig.toml keeps pnpm's isolated layout and pnpm 12's
one-day minimum release age; pnpm-lock.yaml is gone.
- tauri.conf.json, the justfile and scripts/screenshots.sh call bun.
- CI and release: setup-bun with bun-version-file app/package.json and
`bun install --frozen-lockfile` instead of pnpm/action-setup and setup-node;
in the Playwright image (E2E job, screenshots workflow) npm installs the Bun
of packageManager, read with node (the image has no jq or unzip).
- Renovate: packageManager as a dependency of its own, in a "Bun" PR.
- Docs and the toolbox script: Bun instead of Node and pnpm.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y3rdfbWb1xDUdPRng7TX9Z
main's lock file maintenance (#13) only touched app/pnpm-lock.yaml, which this branch replaces with app/bun.lock, so the file stays deleted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y3rdfbWb1xDUdPRng7TX9Z
TDD review: no proven findingsI reviewed the migration and tried to prove every suspicion with a test or a run. None turned red, so there is nothing to fix in the PR itself. Checked (all green):
Dropped (no failing test):
Merge conflict: main's lock file maintenance (#13) changed Checks on the merged branch (376527c): Biome, Generated by Claude Code |
|
TDD-Review abgeschlossen: keine belegten Findings; main ohne Force-Push eingemergt (376527c). CI grün: Frontend, Playwright E2E, Rust Linux/macOS, Coverage. Merge per Squash. Generated by Claude Code |
Moves the frontend in
app/from pnpm and Node to Bun as package manager, script runner and Playwright runner, following firsttris/workflowstech-stack.md("Tooling") and the migrations of haul and windfenster.Changes
app/package.json:packageManager: bun@1.4.4(waspnpm@12.16.1); scripts chainbun run i18n;e2eisbun --bun playwright test(app/already has"type": "module").app/bun.lockconverted frompnpm-lock.yamlbybun install: the same 378 package@version pairs (compared one by one).app/bunfig.toml:linker = "isolated"(pnpm's layout) andminimumReleaseAge = 86400(pnpm 12's default).pnpm-lock.yamlremoved (no other pnpm files or settings existed).playwright.config.tsweb server:bun --bun vite --mode mock.tauri.conf.json:beforeDevCommand/beforeBuildCommand→bun run dev/bun run build.justfile:setup,dev,dev-mock,lint,format,test-frontend,e2e,buildcall bun (bindingsis cargo only).scripts/screenshots.sh:bun run build,bun --bun vite preview,bun scripts/screenshots.mjs.ci.yml,release.yml):oven-sh/setup-bun@v2withbun-version-file: app/package.json,bun install --frozen-lockfile; no setup-node, pnpm/action-setup or pnpm store cache. Releases build withbun run tauri build(the repo does not use tauri-action). Playwright image fromapp/bun.lock; in it the E2E job installs Bun withnpm install --global "bun@$(node -p ...packageManager...)".screenshots.yml: the shared workflow'sinstallinstalls the same Bun the same way,lockfile: app/bun.lock.packageManagerinapp/package.json, its own "Bun" group.development.md,installation.md) andpackaging/toolbox.sh: Bun instead of Node and pnpm.Checks (locally)
tsc -bvite buildmkdocs build --strictAlso:
bun scripts/screenshots.mjsagainstbun --bun vite previewtook all 12 pictures (into a temp folder, nothing committed).Not verified
bun run tauri dev/build) were not run (no WebKitGTK here);bun run tauri --versionworks.justitself is not installed here; the recipes' commands were run directly.Generated by Claude Code