Repository navigation
Move the web parts from pnpm and Node to Bun - #18
Conversation
Bun is the package manager, script runner and Playwright runner of the web
workspace, as firsttris/workflows tech-stack.md ("Tooling") asks and as haul
and windfenster did:
- package.json: `workspaces` (from pnpm-workspace.yaml), `packageManager:
bun@1.4.4`; bun.lock migrated from pnpm-lock.yaml with the same versions
(only pnpm itself is gone); bunfig.toml keeps pnpm's isolated layout and
its one-day minimum release age.
- Scripts: `bun run --filter`, `bun --bun vite` and `bun --bun vitest`, and
`bun --bun playwright test` in web/e2e, whose web servers run
`bun --bun vite preview` in the apps' folders. Under Bun the Vite builds
are byte for byte the ones Node made. screenshots.sh stays bash with bun
in place of pnpm and node.
- Tauri's beforeDevCommand/beforeBuildCommand and the packaging scripts
(bunx tauri) use Bun.
- CI and release: setup-bun with bun-version-file, `bun install
--frozen-lockfile`; no setup-node and pnpm/action-setup. The screenshots
job installs the Bun of packageManager with npm in the Playwright image.
ci-changes.sh watches bun.lock and bunfig.toml.
- The dev image takes bun from oven/bun instead of nodejs22 and pnpm; the
runner's package cache moves to BUN_INSTALL_CACHE_DIR.
- Renovate: Bun (packageManager and the dev image) in one group.
- CLAUDE.md's checks, scripts/check.sh, the docs and READMEs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y3rdfbWb1xDUdPRng7TX9Z
TDD review: one findingRenovate: the Bun of
|
Renovate's bun manager reads "packageManager": "bun@…" from package.json itself, as the dependency "bun" (npm datasource). The Bun rule matched only the regex manager's name for the same line (oven-sh/bun), so "bun" went into the shared monthly group, which merges itself, and CI's Bun would have moved without the dev image's oven/bun. A local run (renovate --platform=local --dry-run=lookup, both pinned back to 1.3.0) put bun in renovate/minor-patch and docker.io/oven/bun in renovate/bun and warned that one sourceUrl spans two branches; with this change both land in renovate/bun. The regex manager is dropped: it only extracted the same line a second time. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y3rdfbWb1xDUdPRng7TX9Z
|
Fix pushed: 51a3c2f (Renovate: the Bun of packageManager in the Bun group). Green test: the same local Renovate run now puts Generated by Claude Code |
|
TDD-Review abgeschlossen: 1 belegtes Finding (Renovate trennte Generated by Claude Code |
Moves the web parts (web/ui, web/viewer, web/client-ui, web/e2e) from pnpm and Node to Bun: package manager, script runner and Playwright runner, following firsttris/workflows
tech-stack.md("Tooling") and the haul and windfenster migrations.Changes
workspacesin package.json (from pnpm-workspace.yaml),packageManager: bun@1.4.4.bun.lockwas migrated frompnpm-lock.yamland keeps the same versions: the 245 package@version entries match the pnpm lockfile exactly; only pnpm itself (packageManagerDependencies) is gone.bunfig.toml:linker = "isolated"(pnpm's layout) andminimumReleaseAge = 86400(pnpm 12's default). No build scripts are blocked (bun pm untrusted: 0), so notrustedDependencies. pnpm files deleted.bun run --filter …,bun run --filter '*'for build/typecheck,bun --bun vitein the apps,bun --bun vitest,bun --bun playwright testin web/e2e (already"type": "module"). Playwright's web servers runbun --bun vite previewin the apps' folders (cwd).scripts/screenshots.shstays bash; its pnpm/node calls are now bun.beforeDevCommand/beforeBuildCommandusebun run --filter;packaging/appimage.shrunsbunx tauri build,build.shinstalls with bun.oven-sh/setup-bun(pinned to v2.2.0,bun-version-file: package.json) andbun install --frozen-lockfilein ci.yml (desktop fallback, web-lint, web-unit, web-e2e) and release.yml; no setup-node or pnpm/action-setup any more. Playwright cache key onbun.lock. The screenshots workflow (shared firsttris/workflows) installs the Bun ofpackageManagerwithnpm install --global "bun@$(node -p …)"in the Playwright image,lockfile: bun.lock.scripts/ci-changes.shwatchesbun.lockandbunfig.toml.dev/Containerfiletakesbunfromoven/bun:1.4.4instead ofnodejs22 pnpm; the GPU runner'sPNPM_HOMEbecomesBUN_INSTALL_CACHE_DIR. Nothing else in the runner changes.packageManagerand a "Bun" group with the dev image'soven/bun.scripts/check.sh, docs (development, testing, modules, gpu-runner), README, apps/desktop README.Checks (local)
bun install --frozen-lockfile: no changesbun run check(Biome): 93 files, cleanbun run --filter '*' typecheck: all 4 packages passbun run test(Vitest on Bun): 23 files, 203 tests passed, the same counts aspnpm teston Node before; coverage on Bun passes its thresholds (lines 96.91 %, branches 90.47 %; Node: 90.9 %)bun run --filter @fernsicht/client-ui build: passes; the client-ui and viewer builds withbun --bun vite buildare identical to Node's--list: 42 tests in 2 files, the same as with pnpm/Node; a fullbun run test:e2e(building and serving both apps): 42 passedbun run screenshots: ran through (9 pictures, not committed)Not checked here
mkdocs build --strictare not installed here (CI's docs build runs them).session-view.test.tsx) failed once while the machine was under load from other processes; it did not happen again in the other runs, or in eight runs of that file alone.Generated by Claude Code