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

10

我正在尝试安装一个存在于我们私有仓库中的软件包。目标是与合作伙伴分享此仓库,但我需要确保他们能够安装它。理论上应该可以工作,但是文档中提供的解决方案都不能正常工作。

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

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

然后使用npm进行安装,但似乎在部署令牌上失败了,但很难确定,因为日志并不是很有用,然后我们整个gitlab部署一度崩溃 #有趣

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
你能解决这个问题吗? - Buddybear
3个回答

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

0

检查依赖包 package.json

在 npm 安装时,如果依赖的 package.json 存在任何问题,错误 npm ERR! premature close 似乎很常见...

  • package.json 是否存在?
  • 里面的所有内容是否绝对正确?
  • 依赖关系是否一切正常?

在我的情况下,我有一个非法的版本号(“1”而不是“1.0.0”)。这在我的本地环境中没有问题,但只有在远程生产部署时才会出现问题。修复后立即清除了错误。

供参考,这是我的依赖行:

"myCustomRepo" : "git+https://MyGithubUsername:MyGithubPublicAccessToken@github.com/MyGithubUsername/myCustomRepo"

-1
如果您想安装私有的npm软件包,您应该使用Scopes。
您可以在存储库的.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
谢谢,我不会将包发布到私人npm注册表,而是尝试从私人gitlab存储库安装。 - islalobo
依赖库确实有一个package.json文件 - 但是根据我在尝试使用访问令牌安装时看到的错误,可能是由于某些原因它没有被识别。 - islalobo
我不确定如何确保 package.json 文件可见,如果它存在但未被 npm 识别。 - islalobo
此外,发布私有的npm包是需要花费金钱的,而根据文档,这应该是可以工作的。 - islalobo
我建议通过文件在本地安装依赖库,以检查package.json是否被正确识别。只是为了确保repo/branch版本是有效的npm模块。npm install /path - straeger
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接