【Unity】使用Verdaccio为Unity Package Manager搭建私有npm包服务器

使用Verdaccio为Unity Package Manager搭建私有npm服务器

重要说明:根据Unity中国团队的反馈,官方对于私有npm服务器的态度还不确定(担心滥用)。现在国际版Unity不限制私有服务器,可以直接使用私有服务器;国内版Unity限制私有服务器, 需要联系Unity团队发放License才能使用私有服务器 。这个License是个独立的License,不是Unity Personal/Pro的那个License。最好仔细评估需求后再决定是否要使用私有npm服务器。
如果私有npm服务器可以在浏览器正常访问,但Unity配置了私有npm服务器之后Console报错 Unable to connect "http://localhost:4873" ,则表明需要申请License。

版本需求

  • Unity 2019.1.0+
  • Node.js 10.0+
  • Verdaccio 4.5.0+

1. 使用Verdaccio搭建私有npm服务器


1.1. 安装Node.js

Windows操作系统

在Node.js下载页面下载最新LTS版安装包,然后运行安装包进行安装即可。

Ubuntu操作系统

Verdaccio的 4.5.0 及更高版本要求Node.js的版本不低于 10 ,但Ubuntu 20.04的包管理器默认只能安装 8.x 版本的Node.js,所以这里要执行一些额外的命令,不过也很简单。在终端依次执行以下2条命令即可安装Node.js:

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs

上面第一条命令中的url中的 12 可以替换成 1014 ,对应将要安装的Node.js的版本。12 是LTS版本,没特殊需求的话用LTS版本比较好。

其他Linux版本参考 Node.js安装指令文档 。


1.2. 安装Verdaccio

Windows操作系统

在命令提示符(或PowerShell)中 以管理员身份 执行以下命令安装Verdaccio:

npm install -g verdaccio

如果命令提示符(或PowerShell)报错提示 无法加载文件xxx,因为在此系统中禁止执行脚本 ,在命令提示符(或PowerShell)中 以管理员身份 执行以下命令,然后再重新执行上面的安装命令:

Set-ExecutionPolicy RemoteSigned

Linux操作系统

在终端中执行以下命令安装Verdaccio:

sudo npm install -g verdaccio

执行命令后,等待安装完成即可。如果终端报错提示 permission denied ,尝试用以下命令代替上面的安装命令:

sudo npm install -g verdaccio --unsafe-perm=true --allow-root

1.3. 启动Verdaccio服务器

在终端(或命令提示符或PowerShell)中执行以下命令启动Verdaccio服务器:

verdaccio

Verdaccio启动后不会返回交互窗口,而是会一直打印运行日志,直到进程结束。日志的起始几行会说明当前服务器的配置文件位置以及访问地址。如下图所示:

【Unity】使用Verdaccio为Unity Package Manager搭建私有npm包服务器_第1张图片

启动完成后,在浏览器中访问私服地址(本例中是 http://localhost:4873/ ),可看到如下页面:

【Unity】使用Verdaccio为Unity Package Manager搭建私有npm包服务器_第2张图片

至此,私有npm服务器的搭建完成。Verdaccio的更多配置方法和高级用法,可以参考官方发布的 Verdaccio配置文档 。


2. 将自己的Unity工具发布到私有npm服务器


2.1. 在本地创建并发布Unity Package

2.1.1. 创建新的包

首先需要在Unity的Package Manager中安装 Package Development 包,后续的自建包的管理过程依赖此包。

【Unity】使用Verdaccio为Unity Package Manager搭建私有npm包服务器_第3张图片

安装好 Package Development 包后,在Package Manager窗口的左上角 加号菜单 中会多出一个 Create Package… 选项。

【Unity】使用Verdaccio为Unity Package Manager搭建私有npm包服务器_第4张图片

点击 Create Package… ,在出现的输入框中输入自己的包名(以MyPackage为例,后同),然后点击 Create 按钮,即可完成创建。

创建新包

2.1.2. 配置包的Manifest信息

等待Unity导入新包完成后,Project窗口的Packages文件夹中会多出一个 MyPackage 文件夹,选中文件夹中的 package.json 文件,即可在Inspector窗口编辑包的manifest信息。包的manifest信息中主要包含了包的 唯一标识名称显示名称版本号类型支持的最低Unity版本简要说明依赖项可见性

【Unity】使用Verdaccio为Unity Package Manager搭建私有npm包服务器_第5张图片

其中包的 类型 会影响包在编辑器中的可见性,但Unity文档中未对此项做出说明,可以在设置时将包的 可见性(Visibility in Editor) 设为 总是可见(Always Visible) 。如果不小心隐藏了包,可以在Package Manager窗口中找到该包,然后点击窗口右下角的 笔形按钮 打开包的manifest信息编辑窗口重新设置可见性。

更详细的包配置说明,可以参考官方发布的包Manifest文档。

2.1.3. 将包发布到本地

配置好包信息后,即可将自己的代码和资源文件按类型放置到 MyPackage 文件夹下的对应文件夹中。

包开发完成后,可以在Package Manager窗口中选中包,通过窗口底部的按钮对包进行 测试验证移除编辑信息发布 。点击 发布 按钮,即可将包在本地发布为tarball压缩包。发布成功后Console会输出tarball压缩包所在文件夹的路径。

【Unity】使用Verdaccio为Unity Package Manager搭建私有npm包服务器_第6张图片

tarball包文件


2.2. 将本地的Unity Package发布到私有npm服务器

2.2.1. 登录到私有npm服务器

在向私服发布包前,要先登录到私服。如果没有登录过,可以在终端执行下面的命令,然后按提示依次输入 用户名密码邮箱 即可完成登录:

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

登录成功后,终端会输出提示信息:

Logged in as your_name on http://localhost:4873/.

2.2.2. 将包发布到私有服务器

将发布得到的tarball解压,然后在终端中进入包文件夹的跟目标(和package.json同级),之后在终端中执行以下命令即可将包发布到私服:

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

执行命令后终端输出包信息,最后一行会显示包的名称和版本:

+ [email protected]

注意,一定不要忘记加 --registry http://localhost:4873 参数,否则会将包发布到公共的npm服务器上(如果没有登录则会发布失败)。如果不小心将包发布到了公共npm服务器上,可以在 24 小时内删除(Verdaccio私服不限制删除)。删除已发布的包的命令是:

npm unpublish --force --registry http://localhost:4873

发布完成后,刷新本地服务器主页,可以看到包已经在主页列出。点击包名,可以查看更详细的信息。

【Unity】使用Verdaccio为Unity Package Manager搭建私有npm包服务器_第7张图片


3. 配置Unity工程从私有npm服务器加载package

为了避免干扰,首先把通过Package Manager创建的本地的 MyPackage 从项目中移除。


3.1. 向Unity编辑器注册私有npm服务器

打开Unity工程包配置文件 manifest.json (工程根目录/Packages/manifest.json),在其中添加 scopedRegistries 属性,如下所示:

{
  "scopedRegistries": [
    {
      "name": "My Registry",
      "url": "http://localhost:4873",
      "scopes": [
        "com.mycompany"
      ]
    }
  ],
  "dependencies": {
    ...
  }
}

上面的配置中, url 是私有npm服务器的地址, scopes 用于包名匹配,暂时没有发现 name 属性的用途。注意 scopedRegistriesscopes 的类型,是数组。

关于包名匹配的详细说明,可以参考官方的 私有包服务器文档。


3.2. 从私有npm服务器安装包

完成上一步的注册后,打开Unity的Package Manager窗口,将包的筛选条件选为 All packages ,在 Advanced 菜单中启用 Show preview packages (如果发布包前对包进行过验证,则无需启用此项)。等包列表刷新完成后,可以在列表中找到 MyPackage ,此后可以像使用其他由Unity发布的包一样使用自己的包。

【Unity】使用Verdaccio为Unity Package Manager搭建私有npm包服务器_第8张图片

你可能感兴趣的:(Unity,工具与环境,unity,package,manager,搭建私有npm服务器,包管理器,verdaccio)