【问题标题】:Uploading node_modules to Nexus hosted NPM repository将 node_modules 上传到 Nexus 托管的 NPM 存储库
【发布时间】:2021-01-01 23:51:29
【问题描述】:

我们正在离线构建服务器中构建我们的项目。因此,我们必须在本地网络 Nexus 中存储和维护我们所有的项目依赖项。

我按照this 指南在 Nexus 中创建了托管 NPM 注册表。我跳过了代理和组部分。现在我想将所有项目 NPM 包(node_modules)从我的本地工作站上传(并维护)到这个存储库。我在 Nexus 存储库设置中看不到上传按钮。如何在 Nexus NPM 注册表中正确上传和维护 NPM 包?这可以通过 Nexus GUI 完成,还是我必须使用命令行?请注意,nexus 已与 Internet 断开连接。

【问题讨论】:

    标签: node.js npm nexus


    【解决方案1】:

    UI 不处理传递依赖。

    你也可以直接使用rest API来管理组件,上传你所有的.tgz包。

    POST ​/v1​/components
    

    例如,要将包 my-npm-package-0.0.0.tgz 上传到存储库 npm-private,请使用以下命令:

    curl -u user:password -X POST "http://localhost:8081/service/rest/v1/components?repository=npm-private" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "npm.asset=@my-npm-package-0.0.0.tgz;type=application/x-compressed"
    

    完整的实时 API 规范可以在端点 /#admin/system/api 找到

    官方nexus文档可以在https://help.sonatype.com/repomanager3/rest-and-integration-api/components-api找到

    【讨论】:

    • 当我尝试将 tgz 发布到 Nexus 存储库时,这对我有很大帮助 - 谢谢
    【解决方案2】:

    您无需上传node_modules

    您需要创建代理和组存储库。

    然后您可以删除项目中的node_modulespackage-lock.json 并运行npm install

    因为您的主机没有这些包,它会从代理下载它们。

    然后你就可以看到群里的那些包了。

    当你再次运行npm install时,它会下载表单Nexus,而不是NPM

    下载速度会非常快

    【讨论】:

    • 我认为这里的关键是离线构建服务器,您似乎假设离线服务器可以访问互联网。
    【解决方案3】:

    在 3.7.0 版本中添加了用于 npm 包的 UI 上传。

    https://help.sonatype.com/display/NXRM3/Uploading+Components

    【讨论】:

    • UI 上传如何处理传递依赖?该项目有大约 500 个依赖项,因此无法一一上传。
    猜你喜欢
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 2021-01-09
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    相关资源
    最近更新 更多