如何将所有NPM包从Sinopia注册表复制到Artifactory的本地NPM存储库?

幼狮亚
2022-12-25 36

主题

如何从Sinopia复制NPM包到Artifactory的本地NPM存储库?

解释

由于以下原因行为,这是不可能解决的范围包来自Artifactory中的远程存储库指向Sinopia的注册
这种行为的原因是Sinopia期望得到编码为'的请求。/'(斜杠)字符,这与npmjs(公共NPM注册表)有效。

例如,Sinopia注册表期望得到如下请求:
@用户名% 2 fnpmscpoe /——/ npmscpoe-1.0.0.tgz

Artifactory将请求发送如下(npmjs所期望的):
@用户名/npmscpoe /——/ npmscpoe-1.0.0.tgz

因此,一个“404通过Artifactory返回Sinopia请求的范围包的响应。

如何克服这种行为?

为了复制所有的包存储在Sinopia注册表中到Artifactory的本地NPM存储库中,你可以遵循以下简单的步骤:

因为所有的包裹都储存在Sinopia的所在地SINOPIA_HOME /存储/美元目录,可以按照下面的步骤将它们从这个位置复制到Artifactory:
  1. 复制SINOPIA_HOME /存储/美元目录到一台可以连接到Artifactory并安装了NPM客户端的机器上(也可以直接从Sinopia主机上工作)

  2. 配置~/。npmrc文件,以便部署(指向)到Artifactory中的NPM本地存储库(您可以遵循'给我介绍Artifactory UI中的'小部件)

  3. 从第1节中提到的存储文件夹位置运行以下命令,获取一个包含所有包的列表的文件:
    查找$SINOPIA_HOME/storage/ name "*。tgz”>listOfPackages.txt

  4. 创建一个脚本美元npm发布所有的NPM包在上面创建的列表文件中,例如:
    #!/bin/bash
    当读取p;做
    echo $ p
    NPM发布$p
    做<listOfPackages.txt

通过遵循上面的步骤,您应该能够将所有的包迁移到Artifactory,从这一点开始,应该是可能的美元npm安装以前存储在Sinopia的范围包,直接从Artifactory的本地NPM存储库中获得。