配置 Lerna 以将 NPM 包发布到私有 Gitlab 存储库

Fel*_*Fel 5 gitlab lerna

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

- lernatest/
    - lerna.json
    - package.json
    - packages/
        - common
            - src/
                - index.ts
            - .npmrc
            - package.json
        - models
            - src
                - index.ts
            - .npmrc
            - package.json
Run Code Online (Sandbox Code Playgroud)

我需要将包发布到我的 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>
Run Code Online (Sandbox Code Playgroud)

在每个package.json文件中:

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

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

{
  "version": "0.0.5",
  "packages": [
    "packages/*"
  ],
  "command": {
    "publish": {
      "registry": "https://gitlab.com/api/v4/projects/<PROJECT_ID>/packages/npm/"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行时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
Run Code Online (Sandbox Code Playgroud)

我试过搜索文档,但找不到任何有用的东西,有什么想法吗?

谢谢!

Fel*_*Fel 5

好像是.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>
Run Code Online (Sandbox Code Playgroud)