3

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

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

每当我尝试使用npm publish命令发布角度库时,我都可以将工件推送到npm-local存储库。但是当我尝试进行 npm install 时(在 package.json 中提到了公共和我们的依赖项)所以它抛出404 not found 错误,看起来它无法从npmjs 注册表 链接中提取公共工件。

同样,如果我指向JFrog 中的npm-central存储库,我可以从 npmjs 注册表中提取公共工件,但不能在那里发布我们的角度库。它抛出 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 存储库中提取公共工件。

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
4

1 回答 1

3

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

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

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

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

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

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

于 2020-03-29T14:45:15.993 回答