【问题标题】:NPM to pull from private GitLab repositoryNPM 从私有 GitLab 存储库中提取
【发布时间】:2018-02-16 18:53:25
【问题描述】:

我有一个 GitLab 域、项目和存储库。这个项目可以通过我所在的小组访问。

我希望通过以下方式通过npm install 下载此内容:

  • 本地计算机
  • GitLab CI 工作
  • Docker 容器内部

我猜最简单的方法就是将其公开。有没有办法解决这个问题,所以它是安全的。我可以想象它必须通过键来完成。

在我的 package.json 依赖项下,我目前有这个,但它当然会给出 401 错误:

"my-module": "my-domain.com:my-project/my-repo#my-branch",

如果可以避免的话,我不希望在 package.json 文件中使用硬编码标记。

【问题讨论】:

    标签: node.js git npm gitlab


    【解决方案1】:

    您可以使用 SSH 密钥访问您的存储库。将 ssh 密钥添加到 GitLab 服务器并以以下形式定义您的存储库的 url:

    git+ssh://git@git.mydomain.com:Username/Repository#{branch|tag}

    git+ssh://git@git.mydomain.com/Username/Repository#{branch|tag}

    在您的package.json 中会是这样的"my-module": "git+ssh://git@my-domain.com:my-project/my-repo#my-branch"

    如果您的 ssh 密钥受密码保护,则 npm 将要求输入密码。

    【讨论】:

    • 我在本地计算机上尝试过,但它不起作用。 NPM 不会安装它,我得到 401 错误。不过,我可以 git clone 存储库。所以真的不知道我做错了什么。
    • 服务器上的 ssh 密钥是否正确?我刚刚在https://gitlab.com 上使用我的私人存储库尝试了该解决方案,并且效果很好。您可以运行npm i --loglevel verbose 并发布身份验证部分吗?或者从您的身份验证尝试所在的 GitLab 服务器发布日志。
    • 嗯,我确定他们是,因为我说过我可以 git clone 仓库没问题 :)(我所说的关键是我的个人资料设置中的那个)。
    • 你能把npm i --loglevel verbose输出的部分发到你的私有包安装在哪里吗?
    • 这不是真的,你只能用你的 synthax 定位一个分支。另外,github 允许你使用#semver:^1.0.0 获取标签,但这不适用于 gitlab。
    猜你喜欢
    • 2019-06-21
    • 2021-02-24
    • 2018-05-20
    • 2014-08-19
    • 1970-01-01
    • 2023-01-26
    • 2021-01-29
    • 1970-01-01
    • 2015-05-06
    相关资源
    最近更新 更多