Skip to content

Instantly share code, notes, and snippets.

@timneutkens
Last active March 4, 2024 14:01
Show Gist options
  • Save timneutkens/f2933558b8739bbf09104fb27c5c9664 to your computer and use it in GitHub Desktop.
Save timneutkens/f2933558b8739bbf09104fb27c5c9664 to your computer and use it in GitHub Desktop.
Clear console/terminal in node.js the right way
const readline = require('readline')
const blank = '\n'.repeat(process.stdout.rows)
console.log(blank)
readline.cursorTo(process.stdout, 0, 0)
readline.clearScreenDown(process.stdout)
@chamberlainpi
Copy link

//this also stops someone scrolling back and viewing sensitive data that may have been logged function clearConsoleAndScrollbackBuffer() { process.stdout.write("\u001b[3J\u001b[2J\u001b[1J");console.clear(); }

Worked for me, thanks @jonathan-annett !

@wSedlacek
Copy link

wSedlacek commented Mar 4, 2024

For macOS to get the terminal to clear including scrollback I use this.

process.stdout.write('\u001Bc\u001B[3J');

It is a NodeJS compatible version of \33c\e[3J (Note: Octal escapes will throw in strict mode so they must be converted)

The sequences being used are:
ESC c - Reset to initial state
CSI 3J - Clear entire screen and delete all lines saved in the scrollback buffer

For those interested in learning the escape sequences these two resources were useful.
https://en.wikipedia.org/wiki/ANSI_escape_code
https://bjh21.me.uk/all-escapes/all-escapes.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment