RuntimePackage ManagerBundlerTest RunnerLinterFormatterGuidesReferenceBlogFeedback

Console

The console object in Bun


Object inspection depth

You can configure how deeply console.log() prints nested objects:

  • CLI flag: Use --console-depth <number> to set the depth for a single run
  • Configuration: Set console.depth in your bunfig.toml to persist it across runs
  • Default: Bun inspects objects to a depth of 2 levels
JavaScript
const nested = { a: { b: { c: { d: "deep" } } } };
console.log(nested);
// Default (depth 2): { a: { b: { c: [Object ...] } } }
// With depth 4: { a: { b: { c: { d: 'deep' } } } }

The CLI flag takes precedence over the configuration file setting.


Reading from stdin

In Bun, the console object is also an AsyncIterable that reads process.stdin line by line.

adder.ts
for await (const line of console) {
  console.log(line);
}

Use this for interactive programs, like the following addition calculator.

adder.ts
console.log(`Let's add some numbers!`);
console.write(`Count: 0\n> `);

let count = 0;
for await (const line of console) {
  count += Number(line);
  console.write(`Count: ${count}\n> `);
}

To run the file:

terminal
bun adder.ts
Let's add some numbers!
Count: 0
> 5
Count: 5
> 5
Count: 10
> 5
Count: 15