12 comments

[ 3.2 ms ] story [ 35.9 ms ] thread
> Plain JavaScript

I don't agree this is a feature. An Javascript implementation of a command line tool is a terrible idea performance wise. There is good reasons jq is written in C.

It's main feature actually. Zero learning curve. Everybody know JavaScript and when performance not important, "fx" is your choose.
I love jq and I wish I could write full programs using the jq funcional language, but this fx thing is great.

Mostly because its lack of learning curve, fx is much better positioned to be used by all people who don't love jq but just use it because there aren't other options.

Thanks. It was the case.
The whole reason for using jq in the first place is to handle json without needing to rely on a high level language runtime being available.
Not convinced. I have nodejs on my machine AND I want to manipulate JSON in cli.
I didn't say your reason. It's the reason the vast majority of people would use it.

It's even alluded to on the project homepage:

> jq is written in portable C, and it has zero runtime dependencies. You can download a single binary, scp it to a far away machine of the same type, and expect it to work.

I think, I can bundle fx with node into single bin for it =)
Done. =)

Now fx has standalone binary (linux, macos, win): https://github.com/antonmedv/fx/releases

Now people are going to complain it's 1500x bigger than jq… :)

Thanks for this tool, i think i'll use it. Jq is great, but i can't do "advanced" operations without manual and/or Google. I use JS almost every day, so with Fx it's way easier (for me).

While jq is definitely faster, for more complex tasks I love using ramda-cli [1]. It has all the functions from the excellent Ramda [2] AND you can use LiveScript's [3] terser syntax (and pipes!).

Here's a quick command to output a list of recent files on Linux:

    xml2json < ~/.local/share/recently-used.xbel | ramda '.xbel.bookmark |> pluck \href |> map replace /file:\/\//, ""' -o raw
1. https://github.com/raine/ramda-cli 2. http://ramdajs.com/ 3. http://livescript.net/
And here's a more interesting example using output from Algolia's search API:

   curl 'https://<redacted Algolia url>' | ramda '.hits |> map pick <[title url story_url objectID points num_comments]> |> evolve title: take 2 |> sort (.points) |> reverse'