Skip to content

Interactive terminal shell for JavaScript runtimes with syntax highlight and zx utilities

License

Notifications You must be signed in to change notification settings

eliot-akira/zxel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zxel

zxel is an interactive terminal shell for JavaScript runtimes with syntax highlight and zx utilities.

Screenshot

Usage

Prerequisites: Node (version 18 or above)

npx zxel

Alternatively, with Bun.

bunx zxel

Features

  • Read-eval-print-loop of JavaScript expression
  • Syntax highlight using emphasize
  • Keyboard shortcuts similar to readline
  • Top-level await
  • Globals from zx
  • Runs with Bun if installed

Environment

Assign variables on this to make it available for subsequent lines of code.

this.a = 123

Using let or const doesn't work because every line is evaluated in its own function scope.

Global utilities like fs and glob are also defined on this.

Object.keys(this).sort()

Globals

Utilities from zx are defined as global variables.

  • $ - Run shell command with return value
    const text = await $`cat readme.md`
    const files = (await $`ls -1`).split('\n')
  • $see - Run shell command with console output
    await $see`ls -1`
  • cd - Change directory
  • fetch - Fetch
  • fs - File system utilities from fs-extra
  • glob - Pattern match files using globby
    for (const file of await glob('*.txt')) {
      console.log(file)
    }
  • globDir - Pattern match directories
  • os - OS info from os
  • path - Path utilities from path

Also globals from Node, or Bun with Database.

Keyboard shortcuts

Shortcut Comment
Enter Run code
Escape Cancel
Forward one character
Ctrl+ Forward one word
Backward one character
Ctrl+ Backward one word
Home, Ctrl+A Beginning of line
End, Ctrl+E End of line
Next line in history
Previous line in history
Ctrl+C Exit shell
Backspace Delete previous character
Delete Delete next character
Ctrl+L Clear screen

TODO

  • Multiline mode

References

About

Interactive terminal shell for JavaScript runtimes with syntax highlight and zx utilities

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published