在企业工件中发布 angular 个库

Publish angular library in enterprise artifactory

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

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

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

中提取 public 工件

同样,如果我指向 JFrog 中的 npm-central 存储库,我可以从 npmjs 注册表中提取 public 工件,但无法发布我们的 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 工件。

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 login')。

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