前回からの続きで、プライベートリポジトリをUnity PackageManagerで使うためにnpmサーバーをローカルに立ててみます。
有名なVerdaccioを使います。Verdaccioは無料でnpmサーバーを作ることが出来ます。
※nodejs、npmのインストールについては割愛します。
Verdaccioのインストールからnpmサーバー起動まで
手順はとても簡単です。 まずは以下のinstallコマンドでVerdaccioをインストールします。
$ npm install -g verdaccio
こんな感じでnpmが古いと言われたら以下のコマンドで最新化します。
$ npm install -g npm
最新化してnpmはバージョン6.14.6を使用することになりました。
npmサーバーを起動
verdaccioコマンドでnpmローカルサーバーが起動します。
$ verdaccio
http://localhost:4873/
にブラウザからアクセスします。
このような画面が表示されたら成功です。
パッケージの用意とレジストリ登録
これからパッケージをレジストリに登録していくわけですが、その前にユーザーの作成をします。
npm adduser --registry http://localhost:4873
上記のコマンドを叩くと
- ユーザー名
- パスワード
- メアド
入力を求められます。全て入力するとユーザーが作成されます。
ログアウトする時は以下のコマンド。
npm logout --registry http://localhost:4873
ログインする時は以下のコマンドです。
npm login --registry http://localhost:4873
話を戻してパッケージを登録していきます。ここでは前回作成した、テスト用リポジトリを登録していきます。
ちなみに以下のようなファイル構成です
├── LICENSE ├── README.md └── hoge ├── aaaaa.txt ├── hoge.txt └── package.json
※本来はC#ファイルとAssemblyDefinitionが必要
package.json
が配置されているhogeディレクトリをカレントディレクトリにして、以下のコマンドを実行します。
npm publish --registry http://localhost:4873
するとhttp://localhost:4873/ (Verdaccioトップページ)に登録されました。
登録されたパッケージをUnityPackageManagerを通してUnityで使っていきます。
UnityPackageManagerで使ってみる
manifest.jsonの一部を編集します。
~~~略~~~ "scopedRegistries": [ { "name": "今回作ったプライベートパッケージ", "url": "http://localhost:4873/", "scopes": [ "info.shibuya24" ] } ]
manifest.jsonの末尾辺りにscopedRegistriesを追加します。すでに存在するなら、中身の配列に要素を追加してください。
url
は今回起動したVerdaccioのURL(http://localhost:4873/
ですね)、scopesにはPackageManagerに表示させるパッケージ名(一部でOK)です。
すると、このようにUnityPackageManagerにリストアップされるようになり、ここからインストールと削除ができるようになります。
scopesの補足
ここに列挙した名前のパッケージをPackageManagerは指定されたURLから検索することになります。
"scopes": [ "info.shibuya24" ]
今回は上記のように記載したので、以下のパッケージを登録したら、
- info.shibuya24.hoge
- info.shibuya24.piyo
- info.aaaaaa.shibuya24.fuga
PackageManagerには、
- info.shibuya24.hoge
- info.shibuya24.piyo
上記の2つがリストアップされることになります。
npmパッケージの更新方法
ソースコードを修正してpublishするだけです。
npm publish --registry http://localhost:4873
このタイミングのpackage.jsonのバージョンが表示されます。
最後に
これでプライベートリポジトリもUnityPackageManagerで使えるようにはなりました。ただ、僕自身サーバーサイドの知識ほぼゼロな人間なのでただ使えました的なフェーズ
です。
以上