PureScript ではどのパッケージが人気なのだろう。調べてみたくなった。
ここでは多くのパッケージから依存されているものを「人気パッケージ」と考えることにし、現時点で最新のパッケージセットである purescript/package-sets の psc-0.12.0-20180803 を対象に調べた。
調べ方は素朴に jq で。 justinwoo/spacchetti が jq で reverse dependencies をとっていたので、それを参考にした。
my @reverseDeps = `cat packages.json | jq 'to_entries[] | select(.value.dependencies[] | contains("$name")) | .key'`;
参考にしたけど、相当改変した。あと contains("$name")
だと部分一致になるのはバグっぽかったので、修正する Pull Request を投げた (justinwoo/spacchetti#15) 。
で、↓が調べるためのスクリプト。とりあえず上限 10 (| limit(10; .[])
) にしている。
git clone https://github.com/purescript/package-sets cd package-sets git checkout psc-0.12.0-20180803 cat packages.json | jq ' [ to_entries as $entries | $entries | .[] | .["key"] as $name | { "name": $name , "count": ( [ $entries | .[] | select(.["value"] | .["dependencies"] | .[] | . == $name) | .key ] | length ) } ] | sort_by(.["count"]) | reverse | limit(10; .[]) '
結果 (TOP 10) は↓のとおり。
{ "name": "prelude", "count": 88 } { "name": "maybe", "count": 54 } { "name": "effect", "count": 37 } { "name": "foldable-traversable", "count": 35 } { "name": "either", "count": 35 } { "name": "tuples", "count": 31 } { "name": "newtype", "count": 29 } { "name": "control", "count": 27 } { "name": "lists", "count": 23 } { "name": "strings", "count": 21 }
当然のように prelude が一位。ただ全部で 160 パッケージあるのに、依存していないものもあるのは気になる。使っていないのか、それとも dependencies
に書かなくても動くのか。とりあえず上位は本当によく見るパッケージなので、特に思うところはない。