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

时间:2019-01-28 15:06:31

标签: reactjs git npm

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

我尝试将软件包添加到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

我已经阅读了许多相关的问题和文章,但是没有任何帮助

2 个答案:

答案 0 :(得分:0)

如果要安装私有npm软件包,则应使用“作用域”。

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

示例.npmrc在您的应用程序存储库中:

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

因此npm可以处理类似的依赖项: @ scopeName / yourprivateModule @ version

访问此存储库的令牌不应包含在您的存储库中,而应在主文件夹.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

答案 1 :(得分:0)

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