| Test Scenario | Lock | Cache | Yarn 4 | Node 22 | Node 24 | Bun 1.2 |
|---|---|---|---|---|---|---|
| No cache or lock | ❌ | ❌ | 9.6s | 27.3s | 25.5s | 6.1s |
| Lock only | ✅ | ❌ | 5.4s | 7.2s | 7.5s | 4.5s |
| Cached install | ✅ | ✅ | 5.2s | 5.2s | 5.4s | 2.6s |
| Install again | ✅ | ✅ | 0.5s | 0.8s | 0.7s | 0.0s |
- Computer: Mac Studio 2022
- OS: macOS 15.5
- Node Version: 22.17.1
- CPU: M1 Max
- RAM: 64 GB
Remove items from each command as necessary for each step.
- NPM:
\rm -rf node_modules package-lock.json && npm cache clean --force && time npm install - Yarn:
\rm -rf node_modules yarn.lock && yarn cache clean && time yarn install - Bun:
\rm -rf node_modules ~/.bun/install/cache && time bun install
Bun is run with no config.
.yarnrc.yml
nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-4.9.1.cjs
enableProgressBars: false
logFilters:
- code: "YN0000" # Suppress basic logs
level: discard
- code: "YN0002" # Suppress missing peer dependency warnings
level: discard
- code: "YN0060" # Suppress invalid peer dependency warnings
level: discard
- code: "YN0085" # Suppress resolution step logs
level: discard
- code: "YN0086" # Suppress peer dependency validation warnings
level: discard
- code: "YN0013" # Suppress fetch step logs
level: discard
- code: "YN0007" # Suppress build logs
level: discard
- code: "*" # Suppress everything else
level: error.npmrc
prefer-dedupe=true
audit=false
fund=false
loglevel=error
install-strategy=hoisted
.tool-versions
yarn 1.22.19
nodejs 22.17.1
bun 1.2.19