Bun v1.1.39 introduced bun.lock, a JSONC formatted lockfile. bun.lock is human-readable and git-diffable without
configuration, at no cost to performance. In 1.2.0+ it is the default format for new projects. See the lockfile
docs.
To teach git how to generate a human-readable diff of Bun's binary lockfile format (.lockb), add the following to your local or global .gitattributes file:
gitattributes
*.lockb binary diff=lockb
Then add the following to your local git config:
git config diff.lockb.textconv bun
git config diff.lockb.binary true
To configure this for every repository, add the following to your global git config:
git config --global diff.lockb.textconv bun
git config --global diff.lockb.binary true
How this works
textconvtells git to run bun on the file before diffingbinarytells git to treat the file as binary (so it doesn't try to diff it line-by-line)
Running Bun on the lockfile (bun ./bun.lockb) prints a human-readable version of it, which git diff then diffs.