渋谷ほととぎす通信

新しいこと、枯れたこと問わずサムザップ大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ。基礎を大事にしています。※あくまで個人ブログであり所属組織とは関係ありません

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


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


有名なVerdaccioを使います。Verdaccioは無料でnpmサーバーを作ることが出来ます。

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

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

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

$ npm install -g verdaccio

f:id:esakun:20200720091019p:plain:w450 こんな感じでnpmが古いと言われたら以下のコマンドで最新化します。

$ npm install -g npm

最新化してnpmはバージョン6.14.6を使用することになりました。 f:id:esakun:20200720091947p:plain:w240

npmサーバーを起動

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

$ verdaccio

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

f:id:esakun:20200720091203p:plain:w450

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

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

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

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トップページ)に登録されました。

f:id:esakun:20200720093226p:plain:w450

登録されたパッケージを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にリストアップされるようになり、ここからインストールと削除ができるようになります。

f:id:esakun:20200720100817p:plain:w450

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

f:id:esakun:20200720101126p:plain:w450

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

最後に

これでプライベートリポジトリもUnityPackageManagerで使えるようにはなりました。ただ、僕自身サーバーサイドの知識ほぼゼロな人間なのでただ使えました的なフェーズです。


以上

参考