跳到元数据的末尾
转到元数据的开始

概述

从3.2版本开始,Artifactory完全支持npm仓库在Artifactory之上现有的支持用于高级工件管理。

对npm的人工支持提供:

  1. 能够从Artifactory向npm命令行工具提供来自所有存储库类型的npm包
  2. 计算托管在Artifactory本地存储库中的npm包的元数据
  3. 访问远程npm注册表(例如https://registry.npmjs.org)通过远程存储库哪些提供了常用的代理和缓存功能
  4. 通过将多个npm注册表聚合在同一个URL下,可以访问多个npm注册表虚拟存储库.这克服了npm客户端一次只能访问单个注册表的限制。
  5. NPM命令行工具部署和删除包等。
  6. 支持灵活的NPM存储库布局它允许您组织NPM包,并根据项目或开发团队分配访问权限。

支持矩阵

Artifactory版本

Npm版本
3.4.2 + 2.0 +
< 3.4.2 1.4.3及2.0以下的所有版本

页面内容


配置

局部存储库

要启用在本地存储库中计算npm包元数据,请在编辑本地存储库对话框中,选择标签和检查启用Npm支持

仓库布局

Artifactory允许你为你的npm存储库定义任何布局。为了根据自定义布局上传包,你需要使用npm包。

这会为包创建.tgz文件,然后你可以将其上传到本地npm存储库中的任何路径。

使用以前版本的Artifactory

在3.4.2版本之前,人工地将npm包存储在一个唯一的布局中(对应于http://registry.npmjs.org)在描述包的其他重要元数据中。

因此,如果您使用的是早期版本的Artifactory(低于3.4.2),我们强烈建议您使用npm发布将包部署到本地存储库时。如果不这样做,可能会导致npm客户端忽略元数据(例如贡献者)。

部署人工版本低于3.4.2的npm包

如果您使用的Artifactory版本低于3.4.2,请注意:

如果你选择手动部署npm包(使用Web UI或Artifactory的REST API),你应该使用以下结构部署tgz文件,以便Artifactory能够从中提取元数据:

http://localhost:8081/artifactory/npm-local/< packageName > / / < packageName > - < packageVersion > . tgz

例如:

http://localhost:8081/artifactory/npm-local/express/-/express-3.4.8.tgz

当在树浏览器中选择一个npm存储库时,Artifactory会显示一个相应的代码片段,你可以用它来修改你的npm注册库URL。

远程存储库

一个远程存储库Artifactory中定义的作为在远程URL上管理的注册中心的缓存代理,例如https://registry.npmjs.org

从远程存储库请求的工件(如tgz文件)将按需缓存。您可以从远程存储库缓存中删除下载的构件,但是您不能手动将构件部署到远程npm存储库中。

要定义一个远程存储库来代理远程npm注册表,请遵循以下步骤:

  1. 管理选项卡下配置|存储库远程存储库部分,选择“新建”。
  2. 设置库的关键属性中指定远程注册中心的URLURL字段,如下所示
  3. 标签新建远程存储库对话框中,设置启用Npm支持点击“创建”

虚拟存储库

Artifactory中定义的虚拟存储库聚合来自本地和远程存储库的包。
这允许你从为虚拟存储库定义的单个URL访问本地托管的npm包和远程代理的npm注册表。
要定义虚拟的npm存储库,请创建或编辑一个虚拟存储库的基础本地和远程NPM存储库基本设置选项卡,选中启用Npm支持选项卡。



使用Npm命令行

Npm存储库必须在路径中加上api/ Npm前缀

当通过artitory访问npm存储库时,存储库URL必须以api / npm在小路上。这适用于所有npm命令,包括npm安装npm发布。

例如,如果你是单独使用Artifactory或作为本地服务,你可以使用以下URL访问npm库:

http://localhost:8081/artifactory/api / npm /<库关键>

或者,如果你正在使用Artifactory Online, URL将是:

https://<服务器名称>.artifactoryonline.com/<服务器名称>/api / npm /<库关键>

要使用npm命令行,你需要确保npm已经安装。的最新版本中包含了Npmnode . js

请参考通过包管理器安装Node.js在GitHub或npm README页面

一旦安装了npm,用一个指向Artifactory中npm存储库的URL替换默认的注册表(下面的例子使用了带有键的存储库)npm-repo):

替换默认注册表
NPM设置注册表http://localhost:8081/artifactory/api/npm/npm-repo

我们建议参考虚拟存储库URL作为注册中心。这给了你灵活性重新配置和聚合您部署的其他外部源和本地NPM包存储库。

注意,如果您这样做,您需要使用——注册表参数指定要将包发布到其中的本地存储库npm发布命令。

一旦配置了npm命令行工具,每个npm安装命令将从上面指定的NPM存储库中获取包。例如:

$ npm install request npm http GET http://localhost:8081/artifactory/api/npm/npm-repo/request npm http 200 http://localhost:8081/artifactory/api/npm/npm-repo/request npm http GET http://localhost:8081/artifactory/api/npm/npm-repo/request/-/request-2.33.0.tgz npm http 200 http://localhost:8081/artifactory/api/npm/npm-repo/request/-/request-2.33.0.tgz

Npm发布(部署包)

设置证书

使用npm命令行工具需要执行一些敏感操作,例如发布,使用基本HTTP身份验证与服务器进行身份验证。

要支持身份验证,您需要编辑您的.npmrc文件并输入以下内容:

  • 您的Artifactory用户名和密码(格式化)用户名:密码),Base64编码的字符串
  • 你的电邮地址(npm发布将不工作,如果你的电子邮件没有指定在.npmrc
  • 你需要设置Always-auth = true

直接从Artifactory获取.npmrc条目

你可以使用下面的命令直接从Artifactory获取这些字符串:

$ curl -uadmin:password "http://localhost:8081/artifactory/api/npm/auth" _auth = YWRtaW46e0RFU2VkZX1uOFRaaXh1Y0t3bHN4c2RCTVIwNjF3PT0= email = myemail@email.com always-auth = true

.npmrc文件位置

窗口:% userprofile % \ .npmrc

Linux:~ / .npmrc

目前不支持

Artifactory不支持npm adduser命令,因此要发布包,您需要确保您之前已经在Artifactory上创建了一个用户

还要注意t标签选择npm发布目前不支持。

部署软件包

有两种方法可以将包部署到本地存储库:


在没有匿名访问的情况下使用Artifactory

默认情况下,Artifactory允许匿名访问npm存储库。它的定义是安全|通用配置.详情请参阅允许匿名访问
如果希望能够跟踪用户与存储库的交互方式,则需要取消选中允许匿名访问设置。这意味着用户需要输入用户名和密码,如设置证书以上。


Npm搜索

Artifactory支持多种方法来搜索工件。详情请参阅搜索工件

Artifactory还支持NPM搜索[搜索条件…]但是,由于以下原因,包在发布后可能无法立即使用:

将包发布到本地存储库时,Artifactory计算异步搜索索引,并在索引新发布的包之前等待“静默期”过去。

由于虚拟存储库可能包含本地存储库,因此新发布的包可能无法立即可用。

您可以通过设置以下系统属性来指定索引“静默期”(包发布后的时间)美元ARTIFACTORY_HOME / etc / artifactory.system.properties)。

artifactory.npm.index。quietPeriodSecs = 60 artifactory.npm.index.cycleSecs = 60

在远程存储库的情况下,只有在Artifactory根据检索缓存周期设置。

Artifactory用两个属性注释每个部署或缓存的npm包:npm.namenpm.version

你可以用属性搜索根据NPM包的名称或版本搜索NPM包。


清理本地Npm缓存

npm客户端保存下载包的缓存,以及JSON元数据响应(命名为.cache.json).

JSON元数据缓存文件包含npm客户端用来与服务器通信的url,以及之前请求发送的其他ETag元素。

我们建议在第一次使用Artifactory之前删除npm缓存(包和元数据响应)。这是为了确保您的缓存只包含由于Artifactory请求而不是直接来自Artifactory的元素http://registry.npmjs.org

Windows系统默认的缓存目录为% APPDATA % \ npm-cache而在Linux上是~ / .npm。


Npm作用域包

从3.4.2版本开始,Artifactory完全支持NPM作用域包.这种支持对用户是透明的,不需要对npm客户端进行任何不同的使用。

Npm '斜杠'字符编码

默认情况下,npm客户端在与npm注册表通信之前,会将斜杠字符('/')编码为它们的ASCII表示形式("%2f")。如果运行Tomcat作为HTTP容器(Artifactory的默认值),则会生成“HTTP 400”错误,因为Tomcat默认情况下不允许编码斜杠。为了在使用npm作用域包时避免这个错误,你可以通过定义下面的代码来覆盖这个默认行为系统属性

org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true

为npm客户端配置作用域注册表

范围可以与单独的注册中心关联。这样就可以无缝地使用来自公共npm注册中心和一个或多个私有注册中心的包组合。

例如,您可以关联作用域@jfrog通过注册表http://localhost:8081/artifactory/api/npm/npm-local/通过手动更改~ / .npmrc文件并添加如下配置:

@jfrog:registry=http://localhost:8081/artifactory/api/npm/npm-local/ //localhost:8081/artifactory/api/npm/npm-local/:_password=cGFzc3dvcmQ= //localhost:8081/artifactory/api/npm/npm-local/:username=admin //localhost:8081/artifactory/api/npm/npm-local/:email=myemail@email.com //localhost:8081/artifactory/api/npm/npm-local/:always-auth=true

直接从Artifactory获取.npmrc条目

在Artifactory 3.5.3中,你可以使用下面的命令直接从Artifactory获取这些字符串:

$ curl -uadmin:密码“http://localhost:8081/artifactory/api/npm/npm-local/auth/jfrog”
@jfrog:注册表= http://localhost: 8080 / artifactory / api / npm / npm-local /
/ / localhost: 8080 / artifactory / api / npm / npm-local /: _password = QVA1N05OaHZTMnM5Qk02RkR5RjNBVmF4TVFl
/ / localhost: 8080 / artifactory / api / npm / npm-local /:用户名= admin
/ / localhost: 8080 / artifactory / api / npm / npm-local /:电子邮件= admin@www.si-fil.com
/ / localhost: 8080 / artifactory / api / npm / npm-local /: always-auth = true

需要用户邮箱

当使用范围认证时,npm需要一个有效的电子邮件地址。请确保您在Artifactory用户配置文件中包含了您的电子邮件地址。

该密码只是您的Artifactory密码的base64编码,与旧的身份验证配置

推荐npm命令行工具2.1.9及更高版本。

虽然npm作用域包在npm命令行工具2.0版就已经可用了,但我们强烈建议只在npm命令行工具2.1.9版中使用npm作用域包和Artifactory。


查看单个Npm包信息

Artifactory允许你直接从UI中查看npm包的选定元数据。

工件选项卡上,选择树浏览器然后向下钻取,选择要检查的TGZ文件。元数据显示在Npm信息选项卡。

  • 没有标签