Environment
rtk 0.42.4 (Homebrew, /opt/homebrew/bin/rtk)
- macOS (Apple Silicon)
- Project lints with Biome, not ESLint:
package.json → "lint": "biome check"
What happens
My lint script runs Biome. When it goes through rtk's command rewriting, I intermittently get this, with a misleading non-zero exit, even though Biome itself exits 0 and the project is clean:
ESLint output (JSON parse failed: EOF while parsing a value at line 1 column 0)
It masks the real lint result — I had to fall back to running the binary directly (./node_modules/.bin/biome check) to know the true status, which cost real debugging time across a multi-PR session (a green lint kept looking red).
It looks like the lint filter assumes ESLint's JSON output format and tries to JSON-parse Biome's text diagnostics, which fails.
Secondary data point
Running Biome as a bare command through rtk also fails:
$ rtk biome check
[rtk: No such file or directory (os error 2)] # exit 127
(Biome resolves fine via npm run / node_modules/.bin, just not as a top-level rtk-wrapped command.)
Reproducibility
The JSON parse failed message is intermittent — I captured it from session logs, but 3 back-to-back npm run lint runs just now all passed through cleanly (exit 0, normal Biome output). So it seems to trigger only under some conditions (possibly when Biome reports findings / exits non-zero).
Expected
- Detect Biome as a linter and handle its output format, or
- when the linter isn't ESLint, pass the output through unchanged and preserve the real exit code — never synthesize a
JSON parse failed error or a spurious non-zero exit.
Biome is a very common ESLint/Prettier replacement now, so first-class (or at least transparent) handling would help a lot. Happy to provide more logs if useful.
Environment
rtk 0.42.4(Homebrew,/opt/homebrew/bin/rtk)package.json→"lint": "biome check"What happens
My lint script runs Biome. When it goes through rtk's command rewriting, I intermittently get this, with a misleading non-zero exit, even though Biome itself exits
0and the project is clean:It masks the real lint result — I had to fall back to running the binary directly (
./node_modules/.bin/biome check) to know the true status, which cost real debugging time across a multi-PR session (a green lint kept looking red).It looks like the lint filter assumes ESLint's JSON output format and tries to JSON-parse Biome's text diagnostics, which fails.
Secondary data point
Running Biome as a bare command through rtk also fails:
(Biome resolves fine via
npm run/node_modules/.bin, just not as a top-level rtk-wrapped command.)Reproducibility
The
JSON parse failedmessage is intermittent — I captured it from session logs, but 3 back-to-backnpm run lintruns just now all passed through cleanly (exit 0, normal Biome output). So it seems to trigger only under some conditions (possibly when Biome reports findings / exits non-zero).Expected
JSON parse failederror or a spurious non-zero exit.Biome is a very common ESLint/Prettier replacement now, so first-class (or at least transparent) handling would help a lot. Happy to provide more logs if useful.