#gitlab #lerna
#gitlab #lerna
Вопрос:
Я провожу несколько тестов с 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/common 462ms
lerna ERR! E401 401 Unauthorized - PUT https://gitlab.com/api/v4/projects/<PROJECT_ID>/packages/npm/@mypackages/gcommon
Я пробовал искать документацию, но не могу найти ничего полезного, есть идеи?
Спасибо!
Комментарии:
1. Сообщение об ошибке указывает, что вам необходимо пройти проверку подлинности. Я думаю, вы используете пакеты с ограниченной областью действия (
@scoped/package-name
)? Я прав? Вам необходимо установить маркер безопасности:npm config set '//gitlab.com/api/v4/projects/<your_project_id>/packages/npm/:_authToken' "<your_token>"
Из документации2. Привет! Я установил данные аутентификации в
.npmrc
файле в корне проекта, и теперь он работает. Спасибо за ваше предложение.3. Отлично. Приятно слышать
Ответ №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>
Комментарии:
1. Пожалуйста, опубликуйте пример того, как
.npmrc
выглядит ваш файл (без токена безопасности, конечно)2. Наконец, это решило проблему для меня, большое спасибо, что поделились этим.