Установка приватного пакета из Gitlab с помощью Yarn

У меня есть частный пакет npm, который публикуется в реестре пакетов Gitlab с помощью конвейера Gitlab CI.

Я хочу установить этот пакет в проекте, используя пряжу .

Следование документации помогло мне создать следующий файл:

      //gitlab.com/api/v4/packages/npm/:_authToken=glpat-***********
@my-org:registry=https://gitlab.com/api/v4/packages/npm/

С вышеизложенным,npm install @my-org/my-packageработает отлично. Однако,yarn add @my-org/my-packageтерпит неудачу. с использованием--verboseпоказывает 404:

      verbose 1.169823875 Error: https://gitlab.com/api/v4/projects/<my-project-id>/packages/npm/@my-org/my-package/-/@my-org/my-package-1.0.3.tgz: Request failed "404 Not Found"


error An unexpected error occurred: "https://gitlab.com/api/v4/projects/<my-project-id>/packages/npm/@my-org/my-package/-/@my-org/my-package-1.0.3.tgz: Request failed \"404 Not Found\""

Пакет существует в версии 1.0.3, его устанавливает NPM.

  • Мне нужно, чтобы это работало с Yarn. Как я могу это сделать ?
  • Кроме того, есть ли способ вывести authToken из.npmrcфайл ?

3 ответа

Ваш конфиг в.npmrcдолжно работать, если вы используете Yarn v1.x, поскольку Yarn 1 использует реестры, настроенные в этом файле.

Однако для Yarn 2 вы должны настроить свои частные реестры в.yarnc.ymlна уровне проекта:

      npmScopes:
  my-org:
    npmRegistryServer: "https://gitlab.com/api/v4/projects/my-project-id/packages/npm/"
    npmAlwaysAuth: true
    npmAuthToken: glpat-*******

Заменятьmy-orgс областью вашего пакета, my-project-id с числовым идентификатором вашего проекта Gitlab и поместите свой токен с областью действия «api».

Я также не смог установить его с помощью пряжи, но npm был в порядке.

Это сработало:

      npm config set -- //gitlab.com/api/v4/packages/npm/:_authToken=XXX

npm config set -- //gitlab.com/api/v4/projects/<projectID>/packages/npm/:_authToken=XXX

npm config set @my-scope:registry https://gitlab.com/api/v4/packages/npm/  

yarn config set '//gitlab.com/api/v4/projects/:_authToken' "XXX"

yarn config set '//gitlab.com/api/v4/packages/npm/:_authToken' "XXX"

И нет необходимости в .npmrc для этой установки.

Вот официальные документы GitLab по этому вопросу.

Я пробовал много вещей, включая все упомянутое в этом посте, но ничего не помогло. Теперь я не знаю почему, но у меня сработало следующее:

Анонимизировано:

      @XXXXX:registry=https://gitlab.com/api/v4/packages/npm/
//gitlab.com/api/v4/projects/:_authToken=XXXXX
//gitlab.com/api/v4/packages/npm/:_authToken=XXXXX

Аннотация:

      @<my-org>:registry=https://gitlab.com/api/v4/packages/npm/
//<gitlab-url>/api/v4/projects/:_authToken=<auth-token>
//<gitlab-url>/api/v4/packages/npm/:_authToken=<auth-token>

Мой токен авторизации находится в моей основной группе gitlab и имеет только право наread package repository.
Оба пакета находятся в разных группах ниже этого.

Следуя документам, вы получаете URL-адреса сproject/<id>/npmиpackages/npmно я думаю, что ключевым моментом является добавление средней линии, которая на самом деле не задокументирована.

Другие вопросы по тегам