Аутентификация в GitHub Packages
Примечание.
GitHub Packages поддерживает только проверку подлинности с помощью personal access token (classic). Дополнительные сведения см. в разделе Управление личными маркерами доступа.
Для публикации, установки и удаления частных, внутренних и общедоступных пакетов требуется маркер доступа.
Можно использовать personal access token (classic) для проверки подлинности в API GitHub Packages или API GitHub . При создании personal access token (classic)можно назначить маркер различным областям в зависимости от ваших потребностей. Дополнительные сведения о областях, связанных с пакетами, для personal access token (classic), см. в разделе Сведения о разрешениях для пакетов GitHub.
Для проверки подлинности в реестре GitHub Packages в рабочем процессе GitHub Actions можно использовать следующее:
GITHUB_TOKENдля публикации пакетов, связанных с репозиторием рабочих процессов.- personal access token (classic) с по крайней мере
read:packagesобластью действия для установки пакетов, связанных с другими частными репозиториями (GITHUB_TOKENможно использовать, если репозиторий предоставлен доступ на чтение к пакету. См . раздел AUTOTITLE.
Проверка подлинности в GitHub Actions рабочем процессе
Этот реестр поддерживает детализированные разрешения. Для реестров, поддерживающих детализированные разрешения, если рабочий GitHub Actions процесс используется personal access token для проверки подлинности в реестре, настоятельно рекомендуется обновить рабочий процесс для использования GITHUB_TOKEN. Рекомендации по обновлению рабочих процессов, прошедших проверку подлинности в реестре с помощью personal access tokenautoTITLE.
Примечание.
Возможность удаления и восстановления пакетов с помощью REST API GitHub Actions в настоящее время находится в Публичный предварительный просмотр и подлежит изменению.
Вы можете использовать рабочий GITHUB_TOKENGitHub Actions процесс для удаления или восстановления пакета с помощью REST API, если маркер имеет admin разрешение на пакет. Репозитории, публикующие пакеты с помощью рабочего процесса и репозиториев, которые явно подключены к пакетам, автоматически предоставляются admin разрешения на пакеты в репозитории.
Дополнительные сведения см. в GITHUB_TOKENразделе Использование GITHUB_TOKEN для проверки подлинности в рабочих процессах. Дополнительные сведения о рекомендациях при использовании реестра в действиях см. в разделе Скомпрометированные бегуна.
Вы также можете предоставить разрешения на доступ к пакетам независимо друг от другаGitHub CodespacesGitHub Actions. Дополнительные сведения см. в разделе [AUTOTITLE и Настройка управления доступом и видимости пакета](/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#ensuring-workflow-access-to-your-package).
Аутентификация с помощью personal access token
Необходимо использовать personal access token (classic) с соответствующими областями для публикации и установки пакетов в GitHub Packages. Дополнительные сведения см. в разделе Введение в GitHub Packages.
Вы можете выполнить проверку подлинности с помощью npm, изменив GitHub Packages файл для каждого пользователя ~/.npmrc , чтобы включить или personal access token (classic) войти в npm в командной строке с помощью имени пользователя и personal access token.
Чтобы выполнить проверку подлинности путем добавления personal access token (classic)~/.npmrc файла в файл, измените ~/.npmrc файл для проекта, чтобы включить следующую строку, заменив ТОКЕНом personal access token. Создайте файл ~/.npmrc , если он не существует.
//npm.pkg.github.com/:_authToken=TOKEN
Чтобы выполнить проверку подлинности, выполнив вход в npm, используйте npm login команду, заменив имя пользователя именем пользователя, TOKEN с GitHubвашим personal access token (classic) именем пользователя и общедоступнымEMAIL-ADDRESS адресом электронной почты.
Если вы используете npm CLI версии 9 или более поздней версии и войдите в частный реестр или выходите из частного реестра с помощью командной строки, используйте --auth-type=legacy параметр для чтения сведений о проверке подлинности из запросов вместо использования потока входа по умолчанию через браузер. Дополнительные сведения см. в разделе npm-login.
Если GitHub Packages вы не являетесь реестром пакетов по умолчанию для использования npm и хотите использовать npm audit команду, рекомендуется использовать --scope флаг с пространством имен, на котором размещается пакет (личная учетная запись или организация, в которой пакет принадлежит репозиторию, в котором размещен) при проверке подлинностиGitHub Packages.
$ npm login --scope=@NAMESPACE --auth-type=legacy --registry=https://npm.pkg.github.com
> Username: USERNAME
> Password: TOKEN
Публикация пакета
Примечание.
- Имена пакетов и области должны использовать только строчные буквы.
- Тарбол для версии npm должен быть меньше 256 МБ.
Реестр GitHub Packages хранит пакеты npm в вашей организации или личной учетной записи и позволяет связать пакет с репозиторием. Можно указать, нужно ли наследовать разрешения из репозитория или задавать детализированные разрешения независимо от репозитория.
При первой публикации пакета для параметра видимости по умолчанию выбирается закрытый доступ. Чтобы изменить видимость или задать разрешения доступа, см. раздел Настройка управления доступом и видимости пакета. Дополнительные сведения о связывании опубликованного пакета с репозиторием см. в разделе Подключение репозитория к пакету.
Пакет можно подключить к репозиторию сразу после публикации пакета, включив repository поле в package.json файл. Этот метод также можно использовать для подключения нескольких пакетов к одному репозиторию. Дополнительные сведения см. в статье "Публикация нескольких пакетов в одном репозитории".
Примечание.
При публикации пакета, связанного с репозиторием, пакет автоматически наследует разрешения доступа связанного репозитория, а рабочие процессы GitHub Actions в связанном репозитории автоматически получают доступ к пакету, если ваша организация не отключила автоматическое наследование разрешений доступа. Дополнительные сведения см. в разделе Настройка управления доступом и видимости пакета.
Сопоставление областей для проекта можно настроить с помощью локального .npmrc файла в проекте или с помощью publishConfig параметра .package.json
GitHub Packages поддерживает только пакеты npm с областью действия. Имена пакетов с ограниченной областью имеют формат @NAMESPACE/PACKAGE-NAME. Пакеты с ограниченной областью всегда начинаются с символа @. Возможно, вам потребуется обновить имя в вашем package.json имени, чтобы использовать имя области. Например, если вы являетесь пользователем octocat и именем testпакета, назначьте имя пакета с областью следующим образом: "name": "@octocat/test"
После публикации пакет можно просмотреть здесь: GitHub. Дополнительные сведения см. в разделе Просмотр пакетов.
Публикация пакета с помощью локального .npmrc файла
Файл можно использовать .npmrc для настройки сопоставления областей для проекта.
.npmrc В файле используйте URL-адрес и владельца учетной GitHub Packages записи, чтобы GitHub Packages определить, куда направлять запросы пакетов.
.npmrc Использование файла запрещает другим разработчикам случайно публиковать пакет в npmjs.org вместо GitHub Packagesнего.
-
Пройдите проверку подлинности в GitHub Packages. Дополнительные сведения см. в разделе "Проверка подлинности в GitHub Packages.
-
В том же каталоге, что
package.jsonи файл, создайте или измените.npmrcфайл, чтобы включить строку, указывающую URL-адрес GitHub Packages и пространство имен, в котором размещен пакет. ЗаменитеNAMESPACEименем учетной записи пользователя или организации , в которой пакет будет ограничен.@NAMESPACE:registry=https://npm.pkg.github.com -
Добавьте файл NPMRC в репозиторий, где GitHub Packages может найти ваш проект. Дополнительные сведения см. в разделе Добавление файла в репозиторий.
-
Проверьте имя пакета в проекте
package.json. Полеnameдолжно содержать область и имя пакета. Например, если пакет называется "test", и вы публикуете его в организации "My-org" GitHub ,nameполе в вашемpackage.jsonполе должно быть@my-org/test. -
repositoryПроверьте поле в проектеpackage.json. Значение поляrepositoryдолжно соответствовать URL-адресу репозитория GitHub. Например, если URL-адрес репозитория — этоgithub.com/my-org/test, значением поля репозитория должно бытьhttps://github.com/my-org/test.git. -
Публикация пакета:
npm publish
Публикация пакета с помощью publishConfig файла package.json
Элемент в publishConfig файле можно использовать package.json для указания реестра, в котором требуется опубликовать пакет. Дополнительные сведения см . в статье publishConfig в документации по npm.
-
Измените
package.jsonфайл пакета и добавьтеpublishConfigзапись."publishConfig": { "registry": "https://npm.pkg.github.com" }, -
repositoryПроверьте поле в проектеpackage.json. Значение поляrepositoryдолжно соответствовать URL-адресу репозитория GitHub. Например, если URL-адрес репозитория — этоgithub.com/my-org/test, значением поля репозитория должно бытьhttps://github.com/my-org/test.git. -
Публикация пакета:
npm publish
Публикация нескольких пакетов в одном репозитории
Чтобы опубликовать несколько пакетов и связать их с одинаковым репозиторием, можно включить URL-адрес GitHub репозитория в repository поле package.json файла для каждого пакета. Дополнительные сведения см. в разделе "Создание файла package.json" и "Создание модулей Node.js" в документации npm.
Чтобы убедиться, что URL-адрес репозитория правильный, замените REPOSITORY именем репозитория, содержащего пакет, который требуется опубликовать, и OWNER именем личной учетной записи или организации, GitHub в которой принадлежит репозиторий.
GitHub Packages будет соответствовать репозиторию на основе URL-адреса пакета.
"repository":"https://github.com/OWNER/REPOSITORY",
Установка пакета
Пакеты можно установить, GitHub Packages добавив их в качестве зависимостей в package.json файле проекта. Дополнительные сведения об использовании package.json в проекте см. в статье "Работа с package.json" в документации npm.
По умолчанию вы можете добавлять пакеты из одной организации. Дополнительные сведения см. в разделе "Установка пакетов из других организаций".
Кроме того, необходимо добавить файл в .npmrc проект, чтобы все запросы на установку пакетов проходили.GitHub Packages При маршрутизации всех запросов GitHub Packagesпакетов можно использовать как области, так и неуправляемые пакеты из npmjs.org. Дополнительные сведения см. в документации по npm .
-
Пройдите проверку подлинности в GitHub Packages. Дополнительные сведения см. в разделе "Проверка подлинности в GitHub Packages.
-
В том же каталоге, что
package.jsonи файл, создайте или измените.npmrcфайл, чтобы включить строку, указывающую URL-адрес GitHub Packages и пространство имен, в котором размещен пакет. ЗаменитеNAMESPACEименем учетной записи пользователя или организации , в которой пакет будет ограничен.@NAMESPACE:registry=https://npm.pkg.github.com -
Добавьте файл NPMRC в репозиторий, где GitHub Packages может найти ваш проект. Дополнительные сведения см. в разделе Добавление файла в репозиторий.
-
Настройте
package.jsonв проекте использование устанавливаемого пакета. Чтобы добавить зависимости пакета вpackage.jsonфайл GitHub Packages, укажите полное имя пакета, например@my-org/server. Для пакетов из npmjs.com укажите полное имя, такое как@babel/coreилиlodash. ЗаменитеORGANIZATION_NAME/PACKAGE_NAMEзависимостью пакета.{ "name": "@my-org/server", "version": "1.0.0", "description": "Server app that uses the ORGANIZATION_NAME/PACKAGE_NAME package", "main": "index.js", "author": "", "license": "MIT", "dependencies": { "ORGANIZATION_NAME/PACKAGE_NAME": "1.0.0" } } -
Установите пакет .
npm install
Установка пакетов из других организаций
По умолчанию можно использовать GitHub Packages только пакеты из одной организации. Если вы хотите перенаправить запросы пакетов нескольким организациям и пользователям, вы можете добавить в файл дополнительные строки .npmrc , заменив NAMESPACE имя личной учетной записи или организации , в которую входит пакет.
@NAMESPACE:registry=https://npm.pkg.github.com
@NAMESPACE:registry=https://npm.pkg.github.com