Установка приватного пакета из 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
но я думаю, что ключевым моментом является добавление средней линии, которая на самом деле не задокументирована.