Skip to main content

Trabalhando com o registro npm

Você pode configurar o npm para publicar pacotes no GitHub Packages e usar pacotes armazenados no GitHub Packages como dependências em um projeto npm.

Note

Talvez esse tipo de pacote não esteja disponível para sua instância, pois os administradores do site podem habilitar ou desabilitar cada tipo de pacote compatível. Para obter mais informações, confira "Configurar o suporte ao ecossistema de pacote para sua empresa".

Limites para versões publicadas do npm

Se você publicar mais de 1.000 versões de pacote de npm até GitHub Packages, você poderá ver problemas de performance e tempo-limite que ocorrem durante o uso.

No futuro, para melhorar o desempenho do serviço, você não será capaz de publicar mais de 1.000 versões de um pacote em GitHub. Todas as versões publicadas antes de atingir esse limite serão legíveis.

Se você atingir este limite, considere excluir versões de pacote ou entre em contato com o suporte para obter ajuda. Quando este limite for aplicado, a nossa documentação será atualizada com uma forma de contorná-lo. Para obter mais informações, confira Excluir e restaurar um pacote ou Introdução ao GitHub Packages.

Autenticar-se no GitHub Packages

Note

O GitHub Packages dá suporte apenas à autenticação que usa um personal access token (classic). Para obter mais informações, confira "Gerenciar seus tokens de acesso pessoal".

Você precisa de um token de acesso para publicar, instalar e excluir pacotes privados, públicos e internos.

Você pode usar um personal access token (classic) para se autenticar no GitHub Packages ou na API do GitHub Enterprise Server. Ao criar um personal access token (classic), você pode atribuir diferentes escopos de token, dependendo da sua necessidade. Para obter mais informações sobre escopos relacionados a pacotes para personal access token (classic), confira "Sobre permissões para o GitHub Packages".

Para efetuar a autenticação em um registro do GitHub Packages dentro de um fluxo de trabalho de GitHub Actions, você pode utilizar:

  • GITHUB_TOKEN para publicar pacotes associados ao repositório do fluxo de trabalho.
  • um personal access token (classic) com pelo menos escopo read:packages para instalar pacotes associados a outros repositórios privados (que não podem ser acessados por GITHUB_TOKEN).

Autenticar com um personal access token

Você precisa usar um personal access token (classic) com os escopos apropriados para publicar e instalar pacotes no GitHub Packages. Para obter mais informações, confira "Introdução ao GitHub Packages".

Você pode se autenticar no GitHub Packages com o npm editando o arquivo ~/.npmrc por usuário para incluir seu personal access token (classic) ou fazendo logon no npm na linha de comando com seu nome de usuário e o personal access token.

Para executar a autenticação adicionando seu personal access token (classic) ao arquivo ~/.npmrc, edite o arquivo ~/.npmrc para que o projeto inclua a linha a seguir, substituindo HOSTNAME pelo nome do host de sua instância do GitHub Enterprise Server e TOKEN pelo seu personal access token. Crie um arquivo ~/.npmrc se ele não existir.

Se a sua instância tiver o isolamento de subdomínio habilitado:

//npm.HOSTNAME//:_authToken=TOKEN

Se a sua instância tiver o isolamento de subdomínio desabilitado:

//HOSTNAME/_registry/npm/:_authToken=TOKEN

Para se autenticar fazendo logon no npm, use o comando npm login substituindo USERNAME pelo seu nome de usuário do GitHub, TOKEN pelo seu personal access token (classic) e PUBLIC-EMAIL-ADDRESS pelo seu endereço de email.

Se você estiver usando a CLI do npm versão 9 ou superior e entrando ou saindo de um registro privado usando a linha de comando, use a opção --auth-type=legacy para ler os detalhes da autenticação nos prompts em vez de usar o fluxo de logon padrão em um navegador. Para obter mais informações, consulte npm-login.

Se GitHub Packages não for o registro de pacote padrão para usar o npm e você quiser usar o comando npm audit, recomendamos que use o sinalizador --scope com o namespace que hospeda o pacote (a conta pessoal ou a organização que possui o repositório em que o pacote está hospedado) quando você se autentica no GitHub Packages.

Se a sua instância tiver o isolamento de subdomínio habilitado:

$ npm login --scope=@NAMESPACE --auth-type=legacy --registry=https://npm.HOSTNAME/

> Username: USERNAME
> Password: TOKEN

Se a sua instância tiver o isolamento de subdomínio desabilitado:

$ npm login --scope=@NAMESPACE --auth-type=legacy --registry=https://HOSTNAME/_registry/npm/
> Username: USERNAME
> Password: TOKEN

Publicando um pacote

Note

Os nomes e os escopos dos pacotes só podem usar letras minúsculas.

Configure o mapeamento do escopo para seu projeto usando um arquivo .npmrc local no projeto ou usando a opção publishConfig em package.json. GitHub Packages só é compatível com pacotes npm com escopo definido. Os pacotes com escopo têm nomes com o formato de @NAMESPACE/PACKAGE-NAME. Os pacotes com escopo sempre começam com um símbolo @. Talvez seja necessário atualizar o nome no package.json para usar o nome com escopo. Por exemplo, se você for o usuário octocat e seu pacote for nomeado test, você atribuirá o nome do pacote com escopo da seguinte maneira: "name": "@octocat/test".

Após publicar um pacote, você poderá visualizá-lo no GitHub. Para obter mais informações, confira "Visualizar pacotes".

Como publicar um pacote usando um arquivo .npmrc local

Use um arquivo .npmrc para configurar o mapeamento do escopo para seu projeto. No arquivo .npmrc, use a URL e o proprietário da conta do GitHub Packages para que o GitHub Packages saiba o local para o qual as solicitações de pacote devem ser roteadas. O uso de um arquivo .npmrc impede que outros desenvolvedores publiquem o pacote acidentalmente em npmjs.org em vez de no GitHub Packages.

  1. Autenticar para GitHub Packages. Para obter mais informações, confira "Autenticação no GitHub Packages".
  2. No mesmo diretório do arquivo package.json, crie ou edite um arquivo .npmrc para incluir uma linha especificando a URL do GitHub Packages e o namespace no qual o pacote está hospedado. Substitua NAMESPACE pelo nome da conta de usuário ou organização , que é proprietário do repositório que contém seu projeto.

Se o isolamento de subdomínio estiver habilitado:

@NAMESPACE:registry=https://npm.HOSTNAME

Se o isolamento de subdomínio estiver desabilitado:

@NAMESPACE:registry=https://HOSTNAME/_registry/npm
  1. Adicione o arquivo .npmrc ao repositório em que o GitHub Packages pode encontrar seu projeto. Para obter mais informações, confira "Adicionar um arquivo a um repositório".

  2. Verifique o nome do pacote no package.json do projeto. O campo name precisa conter o escopo e o nome do pacote. Por exemplo, se o pacote for chamado "test" e você o estiver publicando na organização "My-org" do GitHub, o campo name no em seu package.json deverá ser @my-org/test.

  3. Verifique o campo repository em package.json do seu projeto. O campo repository deve corresponder à URL do repositório do GitHub. Por exemplo, se a URL do repositório for github.com/my-org/test, o campo de repositório deverá ser https://github.com/my-org/test.git.

  4. Publicar um pacote:

    npm publish
    

Como publicar um pacote usando publishConfig no arquivo package.json

Use o elemento publishConfig no arquivo package.json para especificar o registro em que deseja publicar o pacote. Para obter mais informações, confira publishConfig na documentação do npm.

  1. Edite o arquivo package.json do pacote e inclua uma entrada publishConfig.

Se a sua instância tiver o isolamento de subdomínio habilitado:

"publishConfig": {
  "registry": "https://npm. HOSTNAME/"
},

Se a sua instância tiver o isolamento de subdomínio desabilitado:

"publishConfig": {
  "registry": "https://HOSTNAME/_registry/npm/"
},
  1. Verifique o campo repository em package.json do seu projeto. O campo repository deve corresponder à URL do repositório do GitHub. Por exemplo, se a URL do repositório for github.com/my-org/test, o campo de repositório deverá ser https://github.com/my-org/test.git.

  2. Publicar um pacote:

    npm publish
    

Publicar vários pacotes no mesmo repositório

Para publicar vários pacotes no mesmo repositório, inclua o URL do repositório do GitHub no campo repository do arquivo package.json de cada pacote. Para obter mais informações, confira Criar um arquivo package.json e Criar módulos Node.js na documentação do npm.

Para garantir que a URL do repositório esteja correta, substitua REPOSITORY pelo nome do repositório que contém o pacote que você deseja publicar, e OWNER pelo nome da conta pessoal ou organização no GitHub que é proprietário do repositório.

O GitHub Packages corresponderá ao repositório baseado na URL, em vez de ser baseado no nome do pacote.

"repository":"https://HOSTNAME/OWNER/REPOSITORY",

Instalando um pacote

Você pode instalar pacotes do GitHub Packages adicionando os pacotes como dependências no arquivo package.json do projeto. Para obter mais informações sobre como usar um package.json no seu projeto, consulte Como trabalhar com package.json na documentação do npm.

Por padrão, você pode adicionar pacotes a partir de uma organização. Para obter mais informações, confira Como instalar pacotes de outras organizações.

Você também precisa adicionar o arquivo .npmrc ao projeto para que todas as solicitações de instalação de pacotes passem pelo GitHub Packages. Ao rotear todas as solicitações de pacotes por meio do GitHub Packages, você pode usar pacotes com e sem escopo do npmjs.com. Para obter mais informações, confira escopo do npm na documentação do npm.

  1. Autenticar para GitHub Packages. Para obter mais informações, confira "Autenticação no GitHub Packages".
  2. No mesmo diretório do arquivo package.json, crie ou edite um arquivo .npmrc para incluir uma linha especificando a URL do GitHub Packages e o namespace no qual o pacote está hospedado. Substitua NAMESPACE pelo nome da conta de usuário ou organização , que é proprietário do repositório que contém seu projeto.

Se o isolamento de subdomínio estiver habilitado:

@NAMESPACE:registry=https://npm.HOSTNAME

Se o isolamento de subdomínio estiver desabilitado:

@NAMESPACE:registry=https://HOSTNAME/_registry/npm
  1. Adicione o arquivo .npmrc ao repositório em que o GitHub Packages pode encontrar seu projeto. Para obter mais informações, confira "Adicionar um arquivo a um repositório".

  2. Configure package.json no projeto para usar o pacote que você está instalando. Para adicionar as dependências de pacote ao arquivo package.json para o GitHub Packages, especifique o nome do pacote com escopo completo, como @my-org/server. Para pacotes de npmjs.com, especifique o nome completo, como @babel/core ou lodash. Substitua ORGANIZATION_NAME/PACKAGE_NAME pela dependência do pacote.

    {
      "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"
      }
    }
    
  3. Instale o pacote.

    npm install
    

Instalar pacotes de outras organizações

Por padrão, você só pode usar pacotes do GitHub Packages de uma organização. Caso deseje encaminhar solicitações de pacotes para várias organizações e usuários, adicione mais linhas ao arquivo .npmrc substituindo HOSTNAME pelo nome do host da sua instância do GitHub Enterprise Server e NAMESPACE pelo nome da conta pessoal ou organização que é o proprietário do repositório que contém o projeto.

Se a sua instância tiver o isolamento de subdomínio habilitado:

@NAMESPACE:registry=https://npm.HOSTNAME
@NAMESPACE:registry=https://npm.HOSTNAME

Se a sua instância tiver o isolamento de subdomínio desabilitado:

@NAMESPACE:registry=https://HOSTNAME/_registry/npm
@NAMESPACE:registry=https://HOSTNAME/_registry/npm

Como usar o registro npm oficial

O GitHub Packages permite que você acesse o registro npm oficial em registry.npmjs.com, caso o administrador do GitHub Enterprise Server tenha habilitado esse recurso. Para obter mais informações, confira Como se conectar ao registro npm oficial.