こんにちは、Unityエンジニアのオオバです。

UnityのPackageManagerプライベートリポジトリの調査
前回からの続きで、プライベートリポジトリをUnity PackageManagerで使うためにnpmサーバーをローカルに立ててみます。

GitHub - verdaccio/verdaccio: 📦🔐A lightweight private proxy registry build in Node.js
有名なVerdaccioを使います。Verdaccioは無料でnpmサーバーを作ることが出来ます。

※nodejs、npmのインストールについては割愛します。

👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

Verdaccioのインストールからnpmサーバー起動まで

手順はとても簡単です。
まずは以下のinstallコマンドでVerdaccioをインストールします。

$ npm install -g verdaccio  

Verdaccioでローカルのnpmサーバーを立ててUnityPackageManagerにプライベートリポジトリを使う_0

こんな感じでnpmが古いと言われたら以下のコマンドで最新化します。

$ npm install -g npm  

最新化してnpmはバージョン6.14.6を使用することになりました。

Verdaccioでローカルのnpmサーバーを立ててUnityPackageManagerにプライベートリポジトリを使う_1

npmサーバーを起動

verdaccioコマンドでnpmローカルサーバーが起動します。

$ verdaccio  

https://localhost:4873/ にブラウザからアクセスします。

Verdaccioでローカルのnpmサーバーを立ててUnityPackageManagerにプライベートリポジトリを使う_2

このような画面が表示されたら成功です。

パッケージの用意とレジストリ登録

これからパッケージをレジストリに登録していくわけですが、その前にユーザーの作成をします。

npm adduser --registry https://localhost:4873  

上記のコマンドを叩くと

入力を求められます。全て入力するとユーザーが作成されます。

ログアウトする時は以下のコマンド。

npm logout --registry https://localhost:4873  

ログインする時は以下のコマンドです。

npm login --registry https://localhost:4873  

話を戻してパッケージを登録していきます。ここでは前回作成した、テスト用リポジトリを登録していきます。

ちなみに以下のようなファイル構成です

├── LICENSE  
├── README.md  
└── hoge  
    ├── aaaaa.txt  
    ├── hoge.txt  
    └── package.json  

※本来はC#ファイルとAssemblyDefinitionが必要

package.jsonが配置されているhogeディレクトリをカレントディレクトリにして、以下のコマンドを実行します。

npm publish --registry https://localhost:4873  

すると【※サイトがクローズ済み】 (Verdaccioトップページ)に登録されました。

Verdaccioでローカルのnpmサーバーを立ててUnityPackageManagerにプライベートリポジトリを使う_3

登録されたパッケージをUnityPackageManagerを通してUnityで使っていきます。

UnityPackageManagerで使ってみる

manifest.jsonの一部を編集します。


~~~略~~~  

"scopedRegistries": [  
  {
    "name": "今回作ったプライベートパッケージ",  
    "url": "https://localhost:4873/",  
    "scopes": [  
      "info.shibuya24"  
    ]  
  }
]  

manifest.jsonの末尾辺りにscopedRegistriesを追加します。すでに存在するなら、中身の配列に要素を追加してください。

urlは今回起動したVerdaccioのURL(https://localhost:4873/ですね)、scopesにはPackageManagerに表示させるパッケージ名(一部でOK)です。

すると、このようにUnityPackageManagerにリストアップされるようになり、ここからインストールと削除ができるようになります。

Verdaccioでローカルのnpmサーバーを立ててUnityPackageManagerにプライベートリポジトリを使う_4

scopesの補足

ここに列挙した名前のパッケージをPackageManagerは指定されたURLから検索することになります。

"scopes": [  
    "info.shibuya24"  
]  

今回は上記のように記載したので、以下のパッケージを登録したら、

PackageManagerには、

上記の2つがリストアップされることになります。

npmパッケージの更新方法

ソースコードを修正してpublishするだけです。

npm publish --registry https://localhost:4873  

Verdaccioでローカルのnpmサーバーを立ててUnityPackageManagerにプライベートリポジトリを使う_5

このタイミングのpackage.jsonのバージョンが表示されます。

最後に

これでプライベートリポジトリもUnityPackageManagerで使えるようにはなりました。

参考

オススメ記事