【问题标题】:Configure Lerna to publish NPM packages to private Gitlab repo配置 Lerna 以将 NPM 包发布到私有 Gitlab 存储库
【发布时间】:2021-01-29 17:16:36
【问题描述】:

我正在使用Lerna 进行一些测试,以创建一个包含一堆我想与某些应用程序共享的包的单一存储库。我按照 Lerna 的文档设置了一个项目,这是文件结构:

- lernatest/
    - lerna.json
    - package.json
    - packages/
        - common
            - src/
                - index.ts
            - .npmrc
            - package.json
        - models
            - src
                - index.ts
            - .npmrc
            - package.json

我需要将包发布到我的 Gitlab 帐户中的私人项目。在使用 Lerna 之前,我可以在每个包上手动添加一个 .npmrc 文件,其中包含以下内容:

@mypackages:registry=https://gitlab.com/api/v4/packages/npm/
//gitlab.com/api/v4/projects/<PROJECT_ID>/packages/npm/:_authToken=<TOKEN>
//gitlab.com/api/v4/packages/npm/:_authToken=<TOKEN>

并且在每个package.json 文件中:

{
  "name": "@mypackages/common",
  "publishConfig": {
    "@mypackages:registry": "https://gitlab.com/api/v4/projects/<PROJECT_ID>/packages/npm/"
  }
  (ETC...)
}

我不知道如何正确配置 Lerna 以将包发布到我的 Gitlab 注册表。这是我的lerna.json 文件:

{
  "version": "0.0.5",
  "packages": [
    "packages/*"
  ],
  "command": {
    "publish": {
      "registry": "https://gitlab.com/api/v4/projects/<PROJECT_ID>/packages/npm/"
    }
  }
}

但是当我运行npx lerna publish 时,我收到以下错误:

lerna info publish Publishing packages to npm...
lerna notice Skipping all user and access validation due to third-party registry
lerna notice Make sure you're authenticated properly ¯\_(ツ)_/¯
lerna http fetch PUT 401 https://gitlab.com/api/v4/projects/<PROJECT_ID>/packages/npm/@mypackages%2fcommon 462ms
lerna ERR! E401 401 Unauthorized - PUT https://gitlab.com/api/v4/projects/<PROJECT_ID>/packages/npm/@mypackages%2fgcommon

我已尝试搜索文档,但找不到任何有用的信息或任何想法?

谢谢!

【问题讨论】:

  • 报错信息提示需要自己认证。我认为您正在使用范围包 (@scoped/package-name) 吗?我对么?您需要设置一个安全令牌:npm config set '//gitlab.com/api/v4/projects/&lt;your_project_id&gt;/packages/npm/:_authToken' "&lt;your_token&gt;" 来自Documentation
  • 嗨!我已经在项目根目录的.npmrc 文件中设置了身份验证详细信息,现在它可以工作了。感谢您的建议。
  • 太棒了。很高兴听到

标签: gitlab lerna


【解决方案1】:

发布时似乎忽略了每个包中的.npmrc 文件。我在项目的根目录中创建了一个带有所需身份验证数据的 .npmrc 文件,现在它就像一个魅力。

这就是我的.npmrc 文件的样子:

@mypackages:registry=https://gitlab.com/api/v4/packages/npm/
//gitlab.com/api/v4/projects/<PROJECT_ID>/packages/npm/:_authToken=<TOKEN>
//gitlab.com/api/v4/packages/npm/:_authToken=<TOKEN>

【讨论】:

  • 请发布您的.npmrc 文件的示例(当然没有安全令牌)
  • 终于为我解决了,非常感谢分享。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 2021-06-06
  • 1970-01-01
  • 2014-08-19
  • 1970-01-01
相关资源
最近更新 更多