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のほうからとってきてたらわからないですね。
Needle ToolsがUnity公式PackageのGitHubにミラーしてくれており、これをウォッチしておくのが今の所の最適解。