{"meta":{"title":"Работа с реестром npm","intro":"Npm можно настроить для публикации пакетов и использования пакетов GitHub Packages , хранящихся GitHub Packages в качестве зависимостей в проекте npm.","product":"GitHub Packages","breadcrumbs":[{"href":"/ru/packages","title":"GitHub Packages"},{"href":"/ru/packages/working-with-a-github-packages-registry","title":"Работа с реестром GitHub Packages"},{"href":"/ru/packages/working-with-a-github-packages-registry/working-with-the-npm-registry","title":"Реестр npm"}],"documentType":"article"},"body":"# Работа с реестром npm\n\nNpm можно настроить для публикации пакетов и использования пакетов GitHub Packages , хранящихся GitHub Packages в качестве зависимостей в проекте npm.\n\n<!-- 2148AF7B-5FF8-4B28-A808-D692FEE2225A -->\n\n## Аутентификация в GitHub Packages\n\n> \\[!NOTE]\n> GitHub Packages поддерживает только проверку подлинности с помощью personal access token (classic). Дополнительные сведения см. в разделе [Управление личными маркерами доступа](/ru/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens).\n\nДля публикации, установки и удаления частных, внутренних и общедоступных пакетов требуется маркер доступа.\n\nМожно использовать personal access token (classic) для проверки подлинности в API GitHub Packages или API GitHub . При создании personal access token (classic)можно назначить маркер различным областям в зависимости от ваших потребностей. Дополнительные сведения о областях, связанных с пакетами, для personal access token (classic), см. в разделе [Сведения о разрешениях для пакетов GitHub](/ru/packages/learn-github-packages/about-permissions-for-github-packages#about-scopes-and-permissions-for-package-registries).\n\nДля проверки подлинности в реестре GitHub Packages в рабочем процессе GitHub Actions можно использовать следующее:\n\n* `GITHUB_TOKEN` для публикации пакетов, связанных с репозиторием рабочих процессов.\n* personal access token (classic) с по крайней мере `read:packages` областью действия для установки пакетов, связанных с другими частными репозиториями (`GITHUB_TOKEN` можно использовать, если репозиторий предоставлен доступ на чтение к пакету. См [. раздел AUTOTITLE](/ru/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility).\n\n### Проверка подлинности в GitHub Actions рабочем процессе\n\nЭтот реестр поддерживает детализированные разрешения. Для реестров, поддерживающих детализированные разрешения, если рабочий GitHub Actions процесс используется personal access token для проверки подлинности в реестре, настоятельно рекомендуется обновить рабочий процесс для использования `GITHUB_TOKEN`. Рекомендации по обновлению рабочих процессов, прошедших проверку подлинности в реестре с помощью personal access token[autoTITLE](/ru/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions#upgrading-a-workflow-that-accesses-a-registry-using-a-personal-access-token).\n\n> \\[!NOTE]\n> Возможность удаления и восстановления пакетов с помощью REST API GitHub Actions в настоящее время находится в Публичный предварительный просмотр и подлежит изменению.\n\nВы можете использовать рабочий `GITHUB_TOKEN`GitHub Actions процесс для удаления или восстановления пакета с помощью REST API, если маркер имеет `admin` разрешение на пакет. Репозитории, публикующие пакеты с помощью рабочего процесса и репозиториев, которые явно подключены к пакетам, автоматически предоставляются `admin` разрешения на пакеты в репозитории.\n\nДополнительные сведения см. в `GITHUB_TOKEN`разделе [Использование GITHUB\\_TOKEN для проверки подлинности в рабочих процессах](/ru/actions/tutorials/authenticate-with-github_token#using-the-github_token-in-a-workflow). Дополнительные сведения о рекомендациях при использовании реестра в действиях см. в разделе [Скомпрометированные бегуна](/ru/actions/concepts/security/compromised-runners#cross-repository-access).\n\nВы также можете предоставить разрешения на доступ к пакетам независимо друг от другаGitHub CodespacesGitHub Actions. Дополнительные сведения см. в разделе \\[AUTOTITLE и [Настройка управления доступом и видимости пакета](/ru/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#ensuring-github-codespaces-access-to-your-package)]\\(/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#ensuring-workflow-access-to-your-package).\n\n### Аутентификация с помощью personal access token\n\nНеобходимо использовать personal access token (classic) с соответствующими областями для публикации и установки пакетов в GitHub Packages. Дополнительные сведения см. в разделе [Введение в GitHub Packages](/ru/packages/learn-github-packages/introduction-to-github-packages#authenticating-to-github-packages).\n\nВы можете выполнить проверку подлинности с помощью npm, изменив GitHub Packages файл для каждого пользователя `~/.npmrc` , чтобы включить или personal access token (classic) войти в npm в командной строке с помощью имени пользователя и personal access token.\n\nЧтобы выполнить проверку подлинности путем добавления personal access token (classic)`~/.npmrc` файла в файл, измените `~/.npmrc` файл для проекта, чтобы включить следующую строку, заменив ТОКЕНом personal access token. Создайте файл `~/.npmrc` , если он не существует.\n\n```shell\n//npm.pkg.github.com/:_authToken=TOKEN\n```\n\nЧтобы выполнить проверку подлинности, выполнив вход в npm, используйте `npm login` команду, заменив имя пользователя именем пользователя, TOKEN с GitHubвашим personal access token (classic) именем пользователя и общедоступнымEMAIL-ADDRESS адресом электронной почты.\n\nЕсли вы используете npm CLI версии 9 или более поздней версии и войдите в частный реестр или выходите из частного реестра с помощью командной строки, используйте `--auth-type=legacy` параметр для чтения сведений о проверке подлинности из запросов вместо использования потока входа по умолчанию через браузер. Дополнительные сведения см. в разделе [`npm-login`](https://docs.npmjs.com/cli/v10/commands/npm-login).\n\nЕсли GitHub Packages вы не являетесь реестром пакетов по умолчанию для использования npm и хотите использовать `npm audit` команду, рекомендуется использовать `--scope` флаг с пространством имен, на котором размещается пакет (личная учетная запись или организация, в которой пакет принадлежит репозиторию, в котором размещен) при проверке подлинностиGitHub Packages.\n\n```shell\n$ npm login --scope=@NAMESPACE --auth-type=legacy --registry=https://npm.pkg.github.com\n\n> Username: USERNAME\n> Password: TOKEN\n```\n\n## Публикация пакета\n\n> \\[!NOTE]\n\n> * Имена пакетов и области должны использовать только строчные буквы.\n> * Тарбол для версии npm должен быть меньше 256 МБ.\n\nРеестр GitHub Packages хранит пакеты npm в вашей организации или личной учетной записи и позволяет связать пакет с репозиторием. Можно указать, нужно ли наследовать разрешения из репозитория или задавать детализированные разрешения независимо от репозитория.\n\nПри первой публикации пакета для параметра видимости по умолчанию выбирается закрытый доступ. Чтобы изменить видимость или задать разрешения доступа, см. раздел [Настройка управления доступом и видимости пакета](/ru/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility). Дополнительные сведения о связывании опубликованного пакета с репозиторием см. в разделе [Подключение репозитория к пакету](/ru/packages/learn-github-packages/connecting-a-repository-to-a-package).\n\nПакет можно подключить к репозиторию сразу после публикации пакета, включив `repository` поле в `package.json` файл. Этот метод также можно использовать для подключения нескольких пакетов к одному репозиторию. Дополнительные сведения см. в статье [\"Публикация нескольких пакетов в одном репозитории](#publishing-multiple-packages-to-the-same-repository)\".\n\n> \\[!NOTE]\n> При публикации пакета, связанного с репозиторием, пакет автоматически наследует разрешения доступа связанного репозитория, а рабочие процессы GitHub Actions в связанном репозитории автоматически получают доступ к пакету, если ваша организация не отключила автоматическое наследование разрешений доступа. Дополнительные сведения см. в разделе [Настройка управления доступом и видимости пакета](/ru/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#about-inheritance-of-access-permissions).\n\nСопоставление областей для проекта можно настроить с помощью локального `.npmrc` файла в проекте или с помощью `publishConfig` параметра .`package.json`\nGitHub Packages поддерживает только пакеты npm с областью действия. Имена пакетов с ограниченной областью имеют формат `@NAMESPACE/PACKAGE-NAME`. Пакеты с ограниченной областью всегда начинаются с символа `@`. Возможно, вам потребуется обновить имя в вашем `package.json` имени, чтобы использовать имя области. Например, если вы являетесь пользователем `octocat` и именем `test`пакета, назначьте имя пакета с областью следующим образом: `\"name\": \"@octocat/test\"`\n\nПосле публикации пакет можно просмотреть здесь: GitHub. Дополнительные сведения см. в разделе [Просмотр пакетов](/ru/packages/learn-github-packages/viewing-packages).\n\n### Публикация пакета с помощью локального `.npmrc` файла\n\nФайл можно использовать `.npmrc` для настройки сопоставления областей для проекта.\n`.npmrc` В файле используйте URL-адрес и владельца учетной GitHub Packages записи, чтобы GitHub Packages определить, куда направлять запросы пакетов.\n`.npmrc` Использование файла запрещает другим разработчикам случайно публиковать пакет в npmjs.org вместо GitHub Packagesнего.\n\n1. Пройдите проверку подлинности в GitHub Packages. Дополнительные сведения см. в разделе [\"Проверка подлинности в GitHub Packages](#authenticating-to-github-packages).\n\n2. В том же каталоге, что `package.json` и файл, создайте или измените `.npmrc` файл, чтобы включить строку, указывающую URL-адрес GitHub Packages и пространство имен, в котором размещен пакет. Замените `NAMESPACE` именем учетной записи пользователя или организации , в которой пакет будет ограничен.\n\n   ```shell\n   @NAMESPACE:registry=https://npm.pkg.github.com\n   ```\n\n3. Добавьте файл *NPMRC* в репозиторий, где GitHub Packages может найти ваш проект. Дополнительные сведения см. в разделе [Добавление файла в репозиторий](/ru/repositories/working-with-files/managing-files/adding-a-file-to-a-repository).\n\n4. Проверьте имя пакета в проекте `package.json`. Поле `name` должно содержать область и имя пакета. Например, если пакет называется \"test\", и вы публикуете его в организации \"My-org\" GitHub , `name` поле в вашем `package.json` поле должно быть `@my-org/test`.\n\n5. `repository` Проверьте поле в проекте`package.json`. Значение поля `repository` должно соответствовать URL-адресу репозитория GitHub. Например, если URL-адрес репозитория — это `github.com/my-org/test`, значением поля репозитория должно быть `https://github.com/my-org/test.git`.\n\n6. Публикация пакета:\n\n   ```shell\n   npm publish\n   ```\n\n### Публикация пакета с помощью `publishConfig` файла `package.json`\n\nЭлемент в `publishConfig` файле можно использовать `package.json` для указания реестра, в котором требуется опубликовать пакет. Дополнительные сведения см [. в статье publishConfig](https://docs.npmjs.com/files/package.json#publishconfig) в документации по npm.\n\n1. Измените `package.json` файл пакета и добавьте `publishConfig` запись.\n\n   ```shell\n   \"publishConfig\": {\n     \"registry\": \"https://npm.pkg.github.com\"\n   },\n   ```\n\n2. `repository` Проверьте поле в проекте`package.json`. Значение поля `repository` должно соответствовать URL-адресу репозитория GitHub. Например, если URL-адрес репозитория — это `github.com/my-org/test`, значением поля репозитория должно быть `https://github.com/my-org/test.git`.\n\n3. Публикация пакета:\n\n   ```shell\n   npm publish\n   ```\n\n## Публикация нескольких пакетов в одном репозитории\n\nЧтобы опубликовать несколько пакетов и связать их с одинаковым репозиторием, можно включить URL-адрес GitHub репозитория в `repository` поле `package.json` файла для каждого пакета. Дополнительные сведения см. в разделе [\"Создание файла](https://docs.npmjs.com/creating-a-package-json-file) package.json\" и [\"Создание модулей](https://docs.npmjs.com/creating-node-js-modules) Node.js\" в документации npm.\n\nЧтобы убедиться, что URL-адрес репозитория правильный, замените `REPOSITORY` именем репозитория, содержащего пакет, который требуется опубликовать, и `OWNER` именем личной учетной записи или организации, GitHub в которой принадлежит репозиторий.\n\nGitHub Packages будет соответствовать репозиторию на основе URL-адреса пакета.\n\n```shell\n\"repository\":\"https://github.com/OWNER/REPOSITORY\",\n```\n\n## Установка пакета\n\nПакеты можно установить, GitHub Packages добавив их в качестве зависимостей в `package.json` файле проекта. Дополнительные сведения об использовании `package.json` в проекте см. в статье [\"Работа с package.json\"](https://docs.npmjs.com/getting-started/using-a-package.json) в документации npm.\n\nПо умолчанию вы можете добавлять пакеты из одной организации. Дополнительные сведения см. в разделе [\"Установка пакетов из других организаций](#installing-packages-from-other-organizations)\".\n\nКроме того, необходимо добавить файл в `.npmrc` проект, чтобы все запросы на установку пакетов проходили.GitHub Packages При маршрутизации всех запросов GitHub Packagesпакетов можно использовать как области, так и неуправляемые пакеты из *npmjs.org*. Дополнительные сведения см. в [документации по npm](https://docs.npmjs.com/misc/scope) .\n\n1. Пройдите проверку подлинности в GitHub Packages. Дополнительные сведения см. в разделе [\"Проверка подлинности в GitHub Packages](#authenticating-to-github-packages).\n\n2. В том же каталоге, что `package.json` и файл, создайте или измените `.npmrc` файл, чтобы включить строку, указывающую URL-адрес GitHub Packages и пространство имен, в котором размещен пакет. Замените `NAMESPACE` именем учетной записи пользователя или организации , в которой пакет будет ограничен.\n\n   ```shell\n   @NAMESPACE:registry=https://npm.pkg.github.com\n   ```\n\n3. Добавьте файл *NPMRC* в репозиторий, где GitHub Packages может найти ваш проект. Дополнительные сведения см. в разделе [Добавление файла в репозиторий](/ru/repositories/working-with-files/managing-files/adding-a-file-to-a-repository).\n\n4. Настройте `package.json` в проекте использование устанавливаемого пакета. Чтобы добавить зависимости пакета в `package.json` файл GitHub Packages, укажите полное имя пакета, например `@my-org/server`. Для пакетов из *npmjs.com* укажите полное имя, такое как `@babel/core` или `lodash`. Замените `ORGANIZATION_NAME/PACKAGE_NAME` зависимостью пакета.\n\n   ```json\n   {\n     \"name\": \"@my-org/server\",\n     \"version\": \"1.0.0\",\n     \"description\": \"Server app that uses the ORGANIZATION_NAME/PACKAGE_NAME package\",\n     \"main\": \"index.js\",\n     \"author\": \"\",\n     \"license\": \"MIT\",\n     \"dependencies\": {\n       \"ORGANIZATION_NAME/PACKAGE_NAME\": \"1.0.0\"\n     }\n   }\n   ```\n\n5. Установите пакет .\n\n   ```shell\n   npm install\n   ```\n\n### Установка пакетов из других организаций\n\nПо умолчанию можно использовать GitHub Packages только пакеты из одной организации. Если вы хотите перенаправить запросы пакетов нескольким организациям и пользователям, вы можете добавить в файл дополнительные строки `.npmrc` , заменив `NAMESPACE` имя личной учетной записи или организации , в которую входит пакет.\n\n```shell\n@NAMESPACE:registry=https://npm.pkg.github.com\n@NAMESPACE:registry=https://npm.pkg.github.com\n```"}