从私有 gitlab 存储库中使用 npm 安装依赖项

Posted

技术标签:

【中文标题】从私有 gitlab 存储库中使用 npm 安装依赖项【英文标题】:Install dependencies with npm from private gitlab repo 【发布时间】:2019-06-21 14:51:24 【问题描述】:

我正在尝试安装一个存在于我们私人仓库中的包。目标是与合作伙伴共享存储库,但我需要确保他们可以安装它。从理论上讲,它应该可以工作,但没有一个记录在案的解决方案对我有用

我已经尝试将包添加到 package.json 文件中

"dependencies": 
    "package_name": "git+https://<deploy-token-name>:<deploy-token>@gitlab.domain.com/group/repo.git"

然后使用 npm 安装,但似乎在部署令牌上失败,但很难说,因为日志不是很有帮助,然后我们的整个 gitlab 部署暂时停止#fun

29 error
29 error undefined
29 error exited with error code: 128

我也尝试过使用私有访问令牌

"package-name": "https://oauth2:<access-token>@gitlab.domain.com/group/repo.git"

这导致了一个我可以理解的实际错误,除了错误是说存储库中没有 package.json,但肯定有

npm ERR! package.json Non-registry package missing package.json: package-name@https://oauth2:<access-token>@gitlab.domain.com/group/repo.git.
npm ERR! package.json npm can't find a package.json file in your current directory.

我已尝试使用 ssh(使用适用于提交等的 ssh 密钥设置)

git+ssh://git@my-domain.com:my-project/my-repo#my-branch

这会导致错误

npm ERR! premature close

我已经阅读了十几个相关的问题和文章,但没有什么对我有用

Install npm module from gitlab private repository Install npm module from gitlab private repository Use dependencies from a private GitLab with NPM https://hackernoon.com/private-npm-packages-2e6579b37616

【问题讨论】:

你能解决这个问题吗? 【参考方案1】:

如果你想安装私有 npm 包,你应该使用 Scopes。

您可以在存储库的 .npmrc 文件中定义范围。

应用程序仓库中的示例 .npmrc:

@scopeName:registry=http://private-npm-registry/
always-auth=true

所以 npm 可以处理如下依赖: @scopeName/yourprivateModule@version

访问此 repo 的令牌不应包含在您的存储库中,应在您的主文件夹 .npmrc 中配置。 Npm 将首先在当前文件夹中查找 .npmrc,然后在您的主文件夹中查找。配置的选项将被合并。

但这种方法只有在您将包发布到私有 npm 注册表时才适合您。 https://docs.gitlab.com/ee/user/project/packages/npm_registry.html#authenticating-with-an-oauth-token

总结一下:

在存储库的 .npmrc 文件中配置范围 在您的环境用户的 .npmrc 文件中配置访问令牌

将作用域依赖添加到你的 package.json

例如

npm i @scopeName/yourprivateModule@version

【讨论】:

谢谢,我没有将包发布到私有 npm 注册表,而是尝试从私有 gitlab 存储库安装 是的,你已经写过了。我只是想向您指出一个更简单的解决方案。也许错误信息有点不清楚。我可以想象你的依赖仓库没有 package.json。?我会先检查一下。 依赖 repo 确实有一个 package.json - 但由于我在尝试使用访问令牌安装时看到的错误,它可能由于某种原因无法识别 我不确定如何确保 package.json 文件存在但 npm 无法识别时可见 另外,发布私有 npm 包需要花钱,而这~应该~根据文档工作【参考方案2】:

我遇到了同样的问题,我设法解决了它。 我要安装的 gitlab 存储库没有 package.json 文件。

【讨论】:

以上是关于从私有 gitlab 存储库中使用 npm 安装依赖项的主要内容,如果未能解决你的问题,请参考以下文章

使用来自 env 变量的令牌从私有 Github 存储库安装 NPM 包

如何在私有 GitLab 存储库中使用 Go

如何通过 https 使用私有 GitLab 存储库作为带有私有令牌的 npm 依赖项

从 Gitlab 私有存储库导入节点模块时出错

使用 GitHub Actions 从私有 GitHub 存储库安装 npm 模块

JFrog私有注册表无法npm安装