angular - 在企业 Artifactory 中发布 Angular 库

标签 angular npm artifactory npm-registry

当我在企业 JFrog 中设置 npm 存储库时,将创建以下 5 个 npm 存储库:

npm-local
npm-release local
npm-generic-local
npm-central
npm-central-cache

每当我尝试使用 npm publish 命令发布 Angular 库时,我都能够将 Artifactory 推送到 npm-local 存储库。但是当我尝试执行 npm 安装时(在 package.json 中提到了 public 和我们的依赖项)所以它抛出 404 not found error,看起来它无法从 中提取公共(public) Artifactory npmjs 注册表 link .

同样,如果我指向 JFrog 中的 npm-central 存储库,我可以从 npmjs 注册表中提取公共(public) Artifactory ,但无法在那里发布我们的 Angular 库。它抛出 400 错误请求错误。(错误日志下方)

18 http fetch PUT 400 <JFrog_Url>/api/npm/npm-release-local/@ca-platform%2fcore 1592ms
19 verbose stack Error: 400 Bad Request - PUT <JFrog_Url>/api/npm/npm-release-local/@ca-platform%2fcore
19 verbose stack     at res.buffer.catch.then.body (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-registry-fetch\check-response.js:104:15)
19 verbose stack     at process._tickCallback (internal/process/next_tick.js:68:7)
20 verbose statusCode 400
21 verbose pkgid @ca-platform/core@1.0.0
22 verbose cwd C:\Decomposition Projects\ca-ui-platform\ca-ui-platform\dist\core
23 verbose Windows_NT 10.0.17763
24 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "publish"
25 verbose node v10.19.0
26 verbose npm  v6.13.4
27 error code E400
28 error 400 Bad Request - PUT <JFrog_Url>/api/npm/npm-release-local/@ca-platform%2fcore
29 verbose exit [ 1, true ]

可以,任何人都可以帮助我了解我必须在 JFrog 中指向哪个 npm 存储库,以便我可以推送我们的库以及从同一个 npm 存储库中提取公共(public) Artifactory 。

PS:我在 .npmrc 文件中使用以下配置指向 JFrog 的任何 npm 存储库:

strict-ssl=false
registry=<JFrog_Url>/api/npm/npm-central/ 
_auth = <auth_token>
email = <email-id>
username= <username>
always-auth=true

最佳答案

npm-本地 npm-release 本地 npm-generic-local 是我理解的所有本地存储库。您可以从 Artifactory 中的本地存储库发布和下载包。

但是,npm-central 是一个指向 npmjs.com 的远程存储库。 远程存储库允许您代理上游(在本例中为 npmjs),但它们不允许您向其发布新包。

您希望能够从单个存储库发布和解析(即下载)包,这就是虚拟存储库发挥作用的地方。

虚拟存储库允许您将一个或多个本地、远程甚至虚拟存储库聚合到一个存储库中,从而允许您访问所有上述存储库中的所有包。 它将允许您下载和发布包。

因此,我建议创建一个虚拟存储库 > 例如聚合 npm-local 和 npm-central(您可以添加您添加的所有远程和本地存储库)> 指定默认部署存储库,这是其中的本地存储库已发布的包将存储在(即当您使用“npm publish”命令时) > 更新您的 .npmrc 文件(不要忘记对新的虚拟存储库执行“npm 登录”)。

这样,您将拥有一个(虚拟)存储库,允许您从 npmjs 下载包(以及本地存储库中的包)并将包发布到您选择的本地存储库。

关于angular - 在企业 Artifactory 中发布 Angular 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60915621/

相关文章:

artifactory - 设置一个 Artifactory 实例来镜像另一个 Artifactory

search - Artifactory AQL 搜索在 Promotion.status 上构建的版本

javascript - 检查单选按钮是否脏/以 react 形式被触摸

node.js - 如何配置git,以便node_modules可以在本地进行版本控制,但在推送时被忽略?

gradle - 使用gradle构建时从Artifactory获取jar文件

ios - npm install -g ios-deploy 不起作用,它显示错误

javascript - 缺少 `T` 的类型注释

内部带有 HTML 标记的 Angular 2 i18n 消息

css - Angular 2 & 4 - ng-pick-datetime 覆盖组件样式表

Angular Material 15 没有用于选择时间或日期的时间或日期时间选择器图标