这是关于如何将Sonatype Nexus 3用作多种技术仓库的第二部分。
npm install有时可能会花费太长时间,因此在自己的内网中拥有一个代理可能是个好主意。如果您不愿支付每月7美元来托管您的包在官方npm私有仓库中,那么你会从本文中受益。
如何下载安装 请查看本系列的第一部分如何使用Sonatype Nexus Repository 3 :Maven仓库配置
我建议您为每个要创建的新仓库创建一个新的Blob存储。这样,每个仓库的数据将位于/nexus-data目录内的不同文件夹中(在Docker容器内部)。但这不是必须的,默认仍然可以正常工作。
私有仓库
用于存储您的团队开发的npm包的仓库。
创建一个新的npm(托管)仓库并按以下方式配置它:
上面的部署策略“允许重新部署”可能看起来有争议,可以将其设置为“禁用重新部署”,这按自己的构建要求配置。
代理仓库
一个代理仓库,用于代理您从官方npm registry(可以添加多个,例如可以增加淘宝的镜像源)下载的所有内容。下次下载相同的依赖项时,它将被缓存在自己的Sonatype Nexus中。
创建一个新的npm(代理)仓库并按以下方式配置它:
组仓库
这将汇集所有上述仓库,并为您提供一个统一的URL,以便配置您的客户端从中下载/部署。
创建一个新的npm(组)仓库并按以下方式配置它:
对于npm,我们将为每个项目配置仓库(不像Maven,它有一些全局配置)。我相信您可以使用npm addUser在全局范围内配置身份验证,但出于简单起见,我没有采用这种方式。
如果您有一个项目只想从Sonatype Nexus下载依赖项,请在项目的根目录下创建一个.npmrc
文件,并添加以下内容:
registry=http://your-host:8081/repository/npm-group/
_auth=YWRtaW46YWRtaW4xMjM=
_auth=YWRtaW46YWRtaW4xMjM=
是凭据(admin/admin123)的Base64哈希值。如果您使用不同的凭据,您应该使用以下方法计算自己的哈希值:
echo -n 'myuser:mypassword' | openssl base64
您必须设置一个用户才能发布包。如果您是从本地计算机执行此操作,npm publish
将使用在~/.npmrc
(位于您的主目录中,而不是在项目中)中配置的用户。如果您没有这个配置,或者如果您想从CI中发布,您可以在项目的.npmrc
中设置email=any@email.com
配置。实际上,可以使用任何电子邮件地址。
如果您有一个要发布到Sonatype Nexus的项目,请将以下内容添加到package.json
文件中:
{..."publishConfig": {"registry": "http://your-host:8081/repository/npm-private/"}}
请注意,您可以将包发布到您的私有仓库,但在下载时,可以指向您的组仓库,以便您自己的包和官方仓库的包都可以从单一的URL中获取。
现在,如果您在您的项目中运行:
npm install
# or
npm publish
您的npm将指向您的Sonatype Nexus实例。
全局安装npm包
Run:
npm --registry http://your-host:8081/repository/npm-group/
install -g your-pac