Open4

Unity Package Managerのパッケージ一覧を取得したい

Unity Package Manager (以降UPM) はいいライブラリが結構あるのですが、最近のUnityでは、pre-releaseなパッケージはプロジェクト設定でEnable Pre-release Packagesをonにしても、released のステータスになっているパッケージしか表示されなくなっていました。 (Unity 2021 LTSで確認) じゃあなんでこのオプションあるんやねん、という話ですが…。

例えば、Unity.XRTools.Utils のライブラリなど、公式のリンクからは探しても表示されず、Googleで検索して、パッケージ存在を確認して、Add package by nameからUnity.XRTools.Utilsを直接入力しないとパッケージをインストールできません。

最新のUnityアプリから見えないUPMの一覧を調べることができないかとなという作業ログです。

UPM自体はNode Package Managerと同じ仕組みを使っているはずなので、Unityのパッケージがおいてあるレジストリの一覧を見れればいいはず。Unityの公式にはUPMのレジストリURLは見つかりませんでしたが、

UPMのキャッシュフォルダ, macOSの場合は~/Library/Unity/cache/npmを見ると、packages.unity.comがわかります。

早速、NPM Registry APIで定義されている-/allを見てみましょう。

curl -i "https://packages.unity.com/-/all"
HTTP/2 404
x-powered-by: Express
content-security-policy: default-src 'none'
x-content-type-options: nosniff
content-type: text/html; charset=utf-8
content-length: 144
vary: Accept-Encoding
date: Fri, 13 May 2022 04:32:44 GMT

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /-/all</pre>
</body>
</html>

…。404でした…。

curl -i "https://packages.unity.com/-/v1/search?text=unity"

searchも404でした。

ちなみにOpenUPMの方は[Registry API](NPM Registry API)準拠なようで、/-/v1/search , /-/allも動きます。

UPMのドキュメントには、独自UPM対応レジストリを作る際には、/-/v1/search , /-/all対応しないと動かないよって言っといて、自分のレジストリは対応してないんかいな。

ちょいと手詰まり。どなたか、わかったら教えて下さい。

Charles でのぞくと api.unity.com からとってきてるぽいなー(リクエスト内容みれないので結局わからんけど…

Charlesそういえば。api.unity.comのほうからとってきてたらわからないですね。

ログインするとコメントできます