chore: standardize on bun for dev and CI#152
Conversation
Settles #150 on bun as the single build/runtime tool: - README: yarn -> bun commands, note bun as the package manager - deploy.yml / lint.yml: setup-node + yarn -> oven-sh/setup-bun + bun install --frozen-lockfile - package.json: chain pagefind into the build script explicitly, since bun does not auto-run post* lifecycle scripts (yarn v1 did) — keeps search indexing working - remove yarn.lock and .npmrc; regenerate bun.lock (was stale vs package.json) Note: bun ignores the nested yarn-style resolutions (warns on install) but the affected transitive deps resolve to the same patched versions anyway. Closes #150 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
bunx in CI resolved a newer TypeScript instead of the locked 5.9.2 (TS 6.x errors on the deprecated baseUrl in tsconfig), and prettier was never a devDependency at all — npx/bunx just fetched latest. Move the lint/typecheck/format commands into package.json scripts so they always use the locally installed, locked versions, and add prettier@^3.8.3 as a devDependency. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… link bins The previous bun.lock was migrated from yarn.lock, leaving tarball-URL resolutions with empty metadata. On a clean install bun linked only 7 of ~40 binaries — node_modules/.bin/tsc didn't exist, so CI's 'tsc' fell through to the GitHub runner's global TypeScript 6, which rejects the deprecated baseUrl in tsconfig (TS5101). pagefind's bin was missing too, which would have broken the Pages deploy the same way. Regenerating the lockfile from scratch fixes bin linking. The fresh resolve pulled in nextra 4.6.1, whose stricter component validation breaks prerendering several pages, so nextra is pinned to ~4.5.0 (resolves 4.5.1) — upgrading nextra belongs in its own PR. Verified in a clean room (rm -rf node_modules + frozen install): lint, typecheck, prettier, and full build incl. pagefind all pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
this one was hanging for me on first Otherwise LTGM |
|
Also afaik we should commit |
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Replying to both comments: Re:
Re: The |
Summary
Settles on bun as the single build/runtime tool for dev and CI, per the decision in #150.
yarn→buncommands, documents bun as the package managerdeploy.yml,lint.yml):actions/setup-node+ yarn →oven-sh/setup-bun@v2+bun install --frozen-lockfile; lint steps run viabun run <script>build— bun does not auto-runpost*lifecycle scripts (yarn v1 did), so the oldpostbuildwould have silently stopped running and broken searchnpx/bunxjust fetched latest)yarn.lockand.npmrc(npm-specific)bun.lockfrom scratch. The committed one was migrated fromyarn.lock, leaving tarball-URL resolutions with empty metadata — on a clean install bun linked only 7 of ~40 binaries.node_modules/.bin/tscdidn't exist, so CI'stscfell through to the GitHub runner's global TypeScript 6, which rejects the deprecatedbaseUrlin tsconfig (TS5101).pagefind's bin was missing too, which would have broken the Pages deploy the same way after merge.~4.5.0(resolves 4.5.1): the fresh lockfile resolve pulled in nextra 4.6.1, whose stricter component validation breaks prerendering several pages (expected nonoptional, received undefined → at children). Upgrading nextra belongs in its own PR.Note on
resolutionsbun warns that it ignores the nested yarn-style resolutions (e.g.
@eslint/config-array/minimatch). The flat ones are honored, and the nested ones resolve to the same patched versions anyway, so they're left in place as documentation of the security pins.Verification (clean room:
rm -rf node_modules+ bun 1.3.14, same as CI)bun install --frozen-lockfile✅ — all bins linkbun run lint/bun run typecheck/bun run format:check✅bun run build✅ — static export + pagefind index lands inout/_pagefindmain, so the bun-based Pages deploy gets its first real run after merge — worth watching that one deploy.Closes #150
🤖 Generated with Claude Code