2018-08-10 PureScript ではどのパッケージが人気なのだろう
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
に書かなくても動くのか。とりあえず上位は本当によく見るパッケージなので、特に思うところはない。