Trabalhando com o registro npm

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

GitHub Package Registry está disponível com GitHub Free, GitHub Pro, GitHub Free para organizações, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server e GitHub AE.

Note: When installing or publishing a docker image, GitHub Package Registry does not currently support foreign layers, such as Windows images.

Limites para versões publicadas do npm

Se você publicar mais de 1.000 versões de pacote de npm até GitHub Package Registry, 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 contornar este limite. Para obter mais informações, consulte "Excluir e restaurar um pacote" ou "Entrar em contato com o suporte."

Autenticar-se no GitHub Package Registry

Você precisa de um token de acesso para publicar, instalar e excluir pacotes no GitHub Package Registry.

Você pode usar um token de acesso pessoal (PAT) para efetuar a autenticação em GitHub Package Registry ou na API de GitHub Ao criar um token de acesso pessoal, você pode atribuir diferentes escopos de token, dependendo da sua necessidade. Para obter mais informações sobre os escopos dos pacotes para um PAT, consulte "Sobre permissões para o GitHub Packages."

Para efetuar a autenticação em um registro do GitHub Package Registry 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 PAT para instalar pacotes associados a outros repositórios privados (que o GITHUB_TOKEN não consegue acessar).

Para obter mais informações sobre GITHUB_TOKEN usado nos fluxos de trabalho de GitHub Actions, consulteAutenticação em um fluxo de trabalho".

Efetuando a autenticação com um token de acesso pessoal

Você deve usar um token de acesso pessoal com os escopos apropriados para publicar e instalar pacotes no GitHub Package Registry. Para obter mais informações, consulte "Sobre GitHub Package Registry."

Você pode efetuar a autenticação no GitHub Package Registry com o npm editando seu arquivo ~/.npmrc por usuário para incluir o seu token de acesso pessoal ou fazer o login no npm na linha de comando usando seu nome de usuário e token de acesso pessoal.

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

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

//npm.HOSTNAME//:_authToken=TOKEN

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

$ npm login --registry=https://npm.pkg.github.com
> Username: USERNAME
> Password: TOKEN
> Email: PUBLIC-EMAIL-ADDRESS

Para efetuar a autenticação conectado no npm, use o comando npm login , substituindo o NOME DE USUÁRIO pelo seu nome de usuário do GitHub, o TOKEN pelo seu token de acesso pessoal e PUBLIC-EMAIL-ADDRESS pelo seu endereço de e-mail.

Se GitHub Package Registry não é seu registro de pacote padrão para usar npm e você deseja usar o comando npm audit , recomendamos que você use o sinalizador --scope com o proprietário do pacote quando você efetuar a autenticação no GitHub Package Registry.

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

$ npm login --scope=@OWNER --registry=https://npm.HOSTNAME/

> Username: USERNAME
> Password: TOKEN
> Email: PUBLIC-EMAIL-ADDRESS

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

$ npm login --scope=@OWNER --registry=https://HOSTNAME/_registry/npm/
> Username: USERNAME
> Password: TOKEN
> Email: PUBLIC-EMAIL-ADDRESS

Publicar um pacote

Nota: Os nomes dos pacotes e escopos só devem usar letras minúsculas.

Por padrão, o GitHub Package Registry publica um pacote no repositório GitHub que você especificar no campo nome do arquivo package.json. Por exemplo, você publicaria um pacote denominado @my-org/test no repositório my-org/test do GitHub. Você pode adicionar um resumo da página de listagem do pacote incluindo um arquivo README.md no diretório do seu pacote. Para obter mais informações, consulte "Trabalhando com package.json" e "Como criar Módulos de Node.js" na documentação do npm.

Você pode publicar vários pacotes no mesmo repositório do GitHub incluindo um campo de URL no arquivo package.json. Para obter mais informações, consulte "Publicar vários pacotes no mesmo repositório".

É possível definir o mapeamento do escopo para o seu projeto usando um arquivo local .npmrc no projeto ou usando a opção publishConfig em package.json. GitHub Package Registry só é compatível com pacotes npm com escopo definido. Pacotes com escopo têm nomes no formato @owner/name. Os pacotes com escopo sempre começam pelo símbolo @. Talvez seja necessário atualizar o nome no package.json para usar o nome com escopo. Por exemplo, "name": "@codertocat/hello-world-npm".

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

Publicar um pacote usando o arquivo .npmrc local

Você pode usar um arquivo .npmrc para configurar o mapeamento do escopo para o seu projeto. No arquivo .npmrc, use a URL e o proprietário da conta de GitHub Package Registry para que GitHub Package Registry saiba onde rotear as solicitações de pacotes. O uso de um arquivo .npmrc impede que outros desenvolvedores publiquem acidentalmente o pacote no npmjs.org em vez de GitHub Package Registry.

  1. Autenticar para GitHub Package Registry. Para obter mais informações, consulte "Authenticating to GitHub Package Registry."

  2. No mesmo diretório que o arquivo package.json, crie ou edite um arquivo .npmrc para incluir uma linha especificando a URL GitHub Package Registry e o proprietário da conta. Substitua OWNER pelo nome do usuário ou da organização que possui o repositório que contém seu projeto.

    Se o isolamento de subdomínio estiver habilitado:

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

    Se o isolamento de subdomínio estiver desabilitado:

    @OWNER:registry=https://HOSTNAME/_registry/npm
  3. Adicione o arquivo .npmrc ao repositório, onde GitHub Package Registry pode encontrar seu projeto. Para obter mais informações, consulte "Adicionar um arquivo a um repositório."

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

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

  6. Publicar um pacote:

    $ npm publish

Publicar um pacote usando o publishConfig no arquivo package.json

Você pode usar o elemento publishConfig no arquivo package.json para especificar o registro onde você quer o pacote publicado. Para obter mais informações, consulte "publishConfig" na documentação npm.

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

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

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

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

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

  3. Publicar um pacote:

    $ npm publish

Publicar vários pacotes no mesmo repositório

Para publicar vários pacotes no mesmo repositório, você pode incluir a URL do repositório do GitHub no campo repositório do arquivo package.json para cada pacote.

Para garantir que a URL do repositório esteja correta, substitua REPOSITÓRIO pelo nome do repositório que contém o pacote que você deseja publicar, e o PROPRIETÁRIO pelo nome de usuário ou conta de organização no GitHub que é proprietário do repositório.

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

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

Instalar um pacote

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

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

You also need to add the .npmrc file to your project so that all requests to install packages will go through GitHub Package Registry. When you route all package requests through GitHub Package Registry, you can use both scoped and unscoped packages from npmjs.org. For more information, see "npm-scope" in the npm documentation.

  1. Autenticar para GitHub Package Registry. Para obter mais informações, consulte "Authenticating to GitHub Package Registry."

  2. No mesmo diretório que o arquivo package.json, crie ou edite um arquivo .npmrc para incluir uma linha especificando a URL GitHub Package Registry e o proprietário da conta. Substitua OWNER pelo nome do usuário ou da organização que possui o repositório que contém seu projeto.

    Se o isolamento de subdomínio estiver habilitado:

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

    Se o isolamento de subdomínio estiver desabilitado:

    @OWNER:registry=https://HOSTNAME/_registry/npm
  3. Adicione o arquivo .npmrc ao repositório, onde GitHub Package Registry pode encontrar seu projeto. Para obter mais informações, consulte "Adicionar um arquivo a um repositório."

  4. Configure package.json no seu projeto para usar o pacote que você está instalando. Para adicionar as suas dependências de pacote ao arquivo package.json para GitHub Package Registry, especifique o nome do pacote com escopo completo, como, por exemplo, @my-org/server. Para pacotes do npmjs.com, especifique o nome completo, como @babel/core ou @lodash. Por exemplo, o arquivo package.json a seguir usa o pacote @octo-org/octo-app como uma dependência.

    {
      "name": "@my-org/server",
      "version": "1.0.0",
      "description": "Server app that uses the @octo-org/octo-app package",
      "main": "index.js",
      "author": "",
      "license": "MIT",
      "dependencies": {
        "@octo-org/octo-app": "1.0.0"
      }
    }
    
  5. Instale o pacote.

    $ npm install

Instalar pacotes de outras organizações

Por padrão, você só pode usar pacotes do GitHub Package Registry de uma organização. Se você deseja encaminhar solicitações de pacotes para várias organizações e usuários, você pode adicionar linhas adicionais ao seu arquivo .npmrc substituindo HOSTNAME pelo nome do host sua instância do GitHub Enterprise Server e OWNER pelo nome do usuário ou conta da organização proprietária do repositório que contém o seu projeto.

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

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

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

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

Usando o registro oficial do NPM

GitHub Package Registry permite que você acesse o registro oficial do NPM no registry.npmjs.com, caso seu administrador de GitHub Enterprise Server tenha habilitado esta funcionalidade. Para obter mais informações, consulte Conectar ao registro oficial do NPM.

Leia mais

Esse documento ajudou você?

Política de Privacidade

Ajude-nos a tornar esses documentos ótimos!

Todos os documentos do GitHub são de código aberto. Você percebeu que algo que está errado ou não está claro? Envie um pull request.

Faça uma contribuição

Ou, aprenda como contribuir.