PhantomJS REPL: it's ready for a taste

  • personal • source • REPL • opensource • phantomjs
  • 305 words

After 2 months of on-off working on this, I finally managed to make something I’m happy with: a REPL for PhantomJS.

The last post I wrote about this was in November 2011 (!!!). But I started putting code together only in Jan 2012. So, overall, from the first commit until today is almost 2 months.

First thing first: how do you get to try it? Well, you can get my fork, switch to the dev-repl branch and try it out:

$ git clone git://github.com/detro/phantomjs.git
$ cd phantomjs
$ git checkout -b dev-repl origin/dev-repl
$ qmake && make

You can download this tarball. Or you just can come up with your own way to checkout my branch.

To launch it, just type:

$ ./bin/phantomjs
>

You will be welcomed by a prompt, waiting for your JavaScript code to be evaluated on the spot. Line by line. Like a proper REPL. The ideal companion for your quick-and-dirty phantomjs-hack-sessions or live-coding keynotes.

The REPL is packed with some good features that I’m sure will please command-line junkies:

  • Context-sensitive auto-completions (i.e. push on TAB to cycle through suggestions)
  • Arrow navigation through the history of what you type
  • Permanent history (yes, like any “modern” CLI)
  • Editable command line (use Left and Right to insert characters where you need them)
  • Pretty-print of expression result (great to quickly recall the name of a method)

It’s not part of the latest PhantomJS, but I plan to file a pull request very soon.

Please, help yourself to it and share your view and feedback. I did this work specifically to make PhantomJS users happy: so, help me make you happy :)

Happy REPL-coding!

P.S.: This whole branch would have not made it without the great linenoise library. In the specific case, I’m using this fork because it has more maintenance. Kudos to everyone involved.