LoginSignup
2
2

More than 3 years have passed since last update.

Node.jsの関数をBashでパイプぽく使えるコマンド

Posted at

Node.jsの関数をBashで使おうと思うことがあるのでしょうか……?
私は今まではありませんでした。

@takuya_1stさんのnodeの関数をbashシェルで使えるようにする。という記事が面白かったのでコマンドを作ってみました。

下記コマンドでインストールできます。

$ npm i -g @amanoese/nodep

使い方

例えば、下記のようにしてQueryStringを無駄にEncode,Decodeした後にJSONに変換することができます。

$ echo -n 'a=b' | nodep encodeURIComponent @ decodeURIComponent @ "require('querystring').parse" @ JSON.stringify
{"a":"b"}

Node関数同士の接続は bash の "|" ではなく "@" になります。

また、元の記事の方ではNode.jsの関数を実際にコマンドとして利用できるようにしていましたが、
コマンドが増えて煩雑になりそうかつ登録で名前の衝突とかしそうと感じたので、1つのコマンド内で処理が完結するようにできるようにしています。

少し実用的な使い方?

下記のように使えばjqでは処理できない?JSONぽいJavaScriptオブジェクトを処理するとき役に立つかもしれません。

$ echo -n '{a:1}' | sed 's/^/x=/' | nodep eval @ JSON.stringify | jq .
{
  "a": 1
}

感想

Node.jsの関数がつかえるとたのしいですね。

余談

パイプライン演算子の実装がきたら下記のようなコマンドにしてJavaScriptぽくしたほうが面白いかもしれません。

$ echo -n 'a=b' | nodep '$stdin |> encodeURIComponent |> decodeURIComponent |> require("querystring").parse |> JSON.stringify'

あと、npmでインストールできますが、このコマンドはShellScriptでできています。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2