Faça a gestão de pacotes Node.js

Esta página descreve as seguintes tarefas:

  • Ver e eliminar pacotes e versões de pacotes
  • Ver, criar, atualizar e eliminar etiquetas

Antes de começar

  1. Se o repositório de destino não existir, crie um novo repositório.
  2. Verifique se tem as autorizações necessárias para o repositório.
  3. Configure a autenticação para o npm.
  4. (Opcional) Configure as predefinições para os comandos gcloud.
  5. Se estiver a usar o auxiliar de credenciais do npm para autenticação, obtenha um token de acesso antes de se ligar a um repositório com o npm.

Funções necessárias

Para receber as autorizações de que precisa para gerir pacotes, peça ao seu administrador para lhe conceder as seguintes funções do IAM no repositório:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Obter um token de acesso

As chaves de acesso são válidas durante 60 minutos. Gere um token de acesso pouco tempo antes de executar comandos que interagem com repositórios.

Para obter um token, use uma destas opções:

  • Use o comando npx para atualizar a chave de acesso.

    1. Certifique-se de que as credenciais para estabelecer ligação ao registo npm público estão no ficheiro de configuração npm do utilizador, ~/.npmrc.

    2. Execute o seguinte comando no diretório do projeto Node.js.

      npx google-artifactregistry-auth
      

      Se o seu repositório do Artifact Registry estiver definido como o seu registo global e os seus pacotes não estiverem no âmbito, use o seguinte comando para que o comando possa transferir o auxiliar de credenciais do registo npm público em vez do seu repositório do Artifact Registry.

      npm_config_registry=https://registry.npmjs.org npx google-artifactregistry-auth
      
  • Adicione um script ao ficheiro package.json no seu projeto.

    "scripts": {
     "artifactregistry-login": "npx google-artifactregistry-auth"
    }
    

    Execute o script no diretório do projeto Node.js.

    npm run artifactregistry-login
    

O Artifact Registry lê as definições do repositório do Artifact Registry no ficheiro .npmrc do projeto e usa-as para adicionar credenciais de token ao ficheiro .npmrc do utilizador. Armazenar o token no ficheiro .npmrc do utilizador isola as suas credenciais do código-fonte e do sistema de controlo de origem.

Adicionar pacotes

Modos de repositório: padrão

Só pode publicar uma versão específica de um pacote uma vez. Esta é uma restrição do npm para garantir que o conteúdo de uma versão do pacote publicada é sempre o mesmo. Por conseguinte, não pode:

  • Substituir uma versão de um pacote publicando-a novamente no repositório
  • Remover um pacote ou a respetiva versão do repositório e, em seguida, publicar um pacote com o mesmo nome e número de versão

Se não especificar uma etiqueta quando publica um pacote, o npm adiciona a etiqueta latest. Para simplificar a instalação dos seus pacotes numa fase de desenvolvimento específica, considere publicar os pacotes com uma etiqueta, como beta ou dev.

O Artifact Registry aplica nomes de pacotes alfanuméricos em minúsculas para pacotes npm.

Para adicionar um pacote:

  1. Certifique-se de que o nome do pacote em package.json inclui o âmbito configurado para o seu repositório. O exemplo seguinte mostra um pacote com o âmbito dev-repo.

    "name": "@dev-repo/my-package"
    
  2. Se estiver a usar o auxiliar de credenciais para autenticar com um token de acesso, obtenha um novo token.

  3. Adicione pacotes ao repositório. Pode usar um comando npm ou yarn.

    Para etiquetar o pacote, inclua a flag --tag e substitua TAG pela etiqueta que quer usar. Se não incluir o sinalizador --tag, o npm define automaticamente a etiqueta como latest.

    npm publish --tag=TAG
    
    yarn publish --tag TAG
    

Visualizar pacotes e versões

Modos de repositório: padrão, remoto e virtual

Para receber informações sobre a encomenda com o npm ou o yarn:

  1. Se estiver a usar o auxiliar de credenciais para autenticar com um token de acesso, obtenha um novo token.

  2. Execute o comando adequado:

    npm view
    
    yarn info
    

Para ver pacotes e versões de pacotes através da Google Cloud consola ou da gcloud:

Consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

  2. Na lista de repositórios, clique no repositório adequado.

    A página Pacotes apresenta os pacotes no repositório.

  3. Clique num pacote para ver as versões do pacote.

gcloud

Para listar os pacotes num repositório, execute o seguinte comando:

gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]

Substitua o seguinte:

  • REPOSITORY é o nome do repositório. Se tiver configurado um repositório predefinido, pode omitir esta flag para usar o predefinido.
  • LOCATION é a localização regional ou multirregional do repositório. Se configurou uma localização predefinida, pode omitir esta flag para usar a predefinição.

Para ver as versões de um pacote, execute o seguinte comando:

gcloud artifacts versions list --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION]

Substitua o seguinte:

  • PACKAGE é o ID do pacote ou o identificador totalmente qualificado do pacote.
  • REPOSITORY é o nome do repositório. Se tiver configurado um repositório predefinido, pode omitir esta flag para usar o predefinido.
  • LOCATION é a localização regional ou multirregional do repositório. Use esta flag para ver repositórios numa localização específica. Se configurou uma localização predefinida, pode omitir esta flag para usar a predefinição.

A visualização de pacotes e versões a partir da Google Cloud consola ou da CLI gcloud só está disponível para repositórios padrão e remotos.

Para repositórios remotos, a lista devolvida deve incluir todas as dependências diretas e transitivas que estão em cache no repositório.

Listar ficheiros

Modos de repositório: padrão, remoto

Pode listar ficheiros num repositório, ficheiros em todas as versões de um pacote especificado ou ficheiros numa versão específica de um pacote.

Para todos os comandos seguintes, pode definir um número máximo de ficheiros a devolver adicionando a flag --limit ao comando.

Para listar todos os ficheiros no projeto, repositório e localização predefinidos quando os valores predefinidos estão configurados:

gcloud artifacts files list

Para listar ficheiros num projeto, num repositório e numa localização especificados, execute o comando:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION

Para listar ficheiros de todas as versões de um pacote específico:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE

Para listar ficheiros de uma versão específica de um pacote:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --version=VERSION
Para listar ficheiros de uma etiqueta específica:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --tag=TAG

Substitua os seguintes valores:

  • LOCATION: a localização regional ou multirregional do repositório.
  • PROJECT: o seu Google Cloud ID do projeto. Se o ID do projeto contiver dois pontos (:), consulte o artigo Projetos com âmbito de domínio.
  • REPOSITORY: o nome do repositório onde a imagem está armazenada.
  • PACKAGE: o nome do pacote.
  • VERSION: a versão do pacote.
  • TAG: a etiqueta associada ao pacote.

Exemplos

Considere as seguintes informações do pacote:

  • Projeto: my-project
  • Repositório: my-repo
  • Localização do repositório: us-west1
  • Pacote: my-app

O comando seguinte lista todos os ficheiros no repositório my-repo na localização us-west1 no projeto predefinido:

gcloud artifacts files list \
    --location=us-west1 \
    --repository=my-repo
O seguinte comando lista os ficheiros na versão 1.0 do pacote.

gcloud artifacts files list \
    --project=my-project \
    --location=us-west1 \
    --repository=my-repo \
    --package=my-app \
    --version=1.0
O comando seguinte lista os ficheiros na versão do pacote com a etiqueta 1.0-dev

gcloud artifacts files list \
    --project=my-project \
    --location=us-west1 \
    --repository=my-repo \
    --package=my-app \
    --tag=1.0-dev

Etiquetagem de pacotes

Modos de repositório: padrão

Pode ver, adicionar, atualizar e eliminar etiquetas. As etiquetas podem ajudar a gerir versões semânticas dos seus pacotes e simplificar a instalação de pacotes numa fase específica do desenvolvimento.

Por exemplo, pode etiquetar a versão candidata atual com rc. A sua equipa pode instalar a versão correta com base na etiqueta em vez de um especificador de versão, e a anulação da publicação de versões de pré-lançamento não usadas não afeta as suas dependências no pacote de versão candidata.

Visualizar etiquetas

Para ver etiquetas de um pacote:

Consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

  2. Clique no pacote para ver as versões e as etiquetas associadas.

  3. Selecione a versão do pacote a etiquetar.

  4. Na linha da versão selecionada, clique em Mais ações (Mais ações) e, de seguida, clique em Editar etiquetas.

  5. Escreva novas etiquetas no campo e, de seguida, clique em GUARDAR.

gcloud

Execute o comando:

gcloud artifacts tags list --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION]

Onde

  • PACKAGE é o nome do pacote no repositório.
  • REPOSITORY é o nome do repositório. Se configurou um repositório predefinido, pode omitir esta flag para usar o predefinido.
  • LOCATION é uma localização regional ou multirregional. Use esta flag para ver repositórios numa localização específica. Se tiver configurado uma localização predefinida, pode omitir esta flag para usar a predefinição.

Por exemplo, para ver as etiquetas do pacote my-package no repositório my-repo na localização predefinida, execute o comando:

gcloud artifacts tags list --package=my-pkg --repository=my-repo

Criar etiquetas

Pode criar uma etiqueta para uma versão específica de um pacote.

Para etiquetar uma imagem existente num repositório:

Consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

  2. Clique no pacote para ver as versões do mesmo.

  3. Selecione a versão do pacote a etiquetar.

  4. Na linha da versão selecionada, clique em Mais ações (Mais ações) e, de seguida, clique em Editar etiquetas.

  5. Escreva novas etiquetas no campo e, de seguida, clique em GUARDAR.

gcloud

Execute o seguinte comando:

gcloud artifacts tags create TAG --package=PACKAGE \
    version=VERSION [--location=LOCATION] [--repository=REPOSITORY]

Onde

  • TAG é a etiqueta que quer aplicar ao pacote.
  • PACKAGE é o nome do pacote no repositório.
  • VERSION é a versão do pacote que quer etiquetar.
  • LOCATION é uma localização regional ou multirregional. Use esta flag para ver repositórios numa localização específica. Se tiver configurado uma localização predefinida, pode omitir esta flag para usar a predefinição.
  • REPOSITORY é o nome do repositório. Se configurou um repositório predefinido, pode omitir esta flag para usar o predefinido.

Por exemplo, para criar a etiqueta release-candidate para a versão 1.0.0 do pacote my-package no repositório my-repo na localização predefinida, execute o comando:

gcloud artifacts tags create release-candidate --version=1.0.0 \
    --package=my-pkg --repository=my-repo

A atualizar etiquetas

Pode alterar uma etiqueta associada a uma versão de pacote.

Para alterar uma etiqueta existente:

Consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

  2. Clique no pacote para ver as versões do mesmo.

  3. Selecione a versão do pacote com a etiqueta a alterar.

  4. Na linha da versão selecionada, clique em Mais ações (Mais ações) e, de seguida, clique em Editar etiquetas.

  5. Edite a etiqueta e, de seguida, clique em GUARDAR.

gcloud

Execute o seguinte comando:

gcloud artifacts tags update TAG --package=PACKAGE \
    version=VERSION [--location=LOCATION] [--repository=REPOSITORY]

Onde

  • TAG é a etiqueta que quer aplicar ao pacote.
  • PACKAGE é o nome do pacote no repositório.
  • VERSION é a versão do pacote que quer etiquetar.
  • LOCATION é uma localização regional ou multirregional. Use esta flag para ver repositórios numa localização específica. Se tiver configurado uma localização predefinida, pode omitir esta flag para usar a predefinição.
  • REPOSITORY é o nome do repositório. Se configurou um repositório predefinido, pode omitir esta flag para usar o predefinido.

Por exemplo, para alterar a etiqueta da versão 1.0.0 do pacote my-package para production no repositório my-repo na localização predefinida, execute o comando:

gcloud artifacts tags update production --version=1.0.0 \
    --package=my-pkg --repository=my-repo

Remover etiquetas de versões de pacotes

Pode remover uma etiqueta existente de uma versão do pacote.

Para remover uma etiqueta:

Consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

  2. Clique na imagem para ver as versões da imagem.

  3. Selecione a versão da imagem para desmarcar.

  4. Na linha da versão selecionada, clique em Mais ações (Mais ações) e, de seguida, clique em Editar etiquetas.

  5. Elimine a etiqueta e, de seguida, clique em GUARDAR.

gcloud

Execute o seguinte comando:

gcloud artifacts tags delete TAG --package=PACKAGE \
    [--location=<LOCATION] [--repository=REPOSITORY]

Onde

  • TAG é a etiqueta que quer aplicar ao pacote.
  • PACKAGE é o nome do pacote no repositório.
  • LOCATION é uma localização regional ou multirregional. Use esta flag para ver repositórios numa localização específica. Se tiver configurado uma localização predefinida, pode omitir esta flag para usar a predefinição.
  • REPOSITORY é o nome do repositório. Se configurou um repositório predefinido, pode omitir esta flag para usar o predefinido.

Por exemplo, para remover a etiqueta release-candidate do pacote my-package no repositório my-repo na localização predefinida, execute o comando:

gcloud artifacts tags delete release-candidate --package=my-pkg \
    --repository=my-repo

Instalar pacotes

Modos de repositório: padrão, remoto e virtual

Para instalar um pacote a partir do repositório de pacotes do Node.js:

  1. Se estiver a usar o auxiliar de credenciais para autenticar com um token de acesso, obtenha um novo token.

  2. Use o comando npm install ou yarn add.

    npm

    Para instalar a versão com a etiqueta latest:

    npm install @SCOPE/PACKAGE
    

    Para instalar a versão com uma etiqueta diferente:

    npm install @SCOPE/PACKAGE@TAG
    

    Para instalar uma versão específica:

    npm install @SCOPE/PACKAGE@VERSION
    

    fio

    Para instalar a versão com a etiqueta latest:

    yarn add @SCOPE/PACKAGE
    

    Para instalar a versão com uma etiqueta diferente:

    yarn add @SCOPE/PACKAGE@TAG
    

    Para instalar uma versão específica:

    yarn add @SCOPE/PACKAGE@VERSION
    

    Substitua os seguintes valores:

    • SCOPE é o âmbito associado ao repositório. Se o repositório de pacotes Node.js não estiver configurado com um âmbito, omita @SCOPE/ do comando.
    • PACKAGE é o nome do pacote no repositório.
    • TAG é a etiqueta da versão que quer instalar.
    • VERSION é o número da versão que quer instalar.

Quando especifica um pacote como uma dependência em package.json, certifique-se de que inclui o âmbito do repositório. O exemplo seguinte mostra o âmbito @dev-repo para um pacote denominado my-package.

"dependencies": {
  "@dev-repo/my-package": ">=1.0.0"
}

Para repositórios padrão, transfere um pacote diretamente do repositório.

Para um repositório remoto, transfere uma cópia em cache do pacote e das respetivas dependências. Se não existir uma cópia em cache, o repositório remoto transfere o pacote da origem a montante e coloca-o em cache antes de o disponibilizar. Pode verificar se o repositório remoto obteve os pacotes da origem a montante vendo a lista de pacotes no repositório.

Para um repositório virtual, o Artifact Registry pesquisa repositórios a montante para o pacote pedido.

  • Os repositórios remotos a montante transferem e colocam em cache o pacote pedido se não existir uma cópia em cache. Os repositórios virtuais apenas publicam pacotes pedidos e não os armazenam.
  • Se pedir uma versão que esteja disponível em mais do que um repositório a montante, o Artifact Registry escolhe um repositório a montante para usar com base nas definições de prioridade configuradas para o repositório virtual.

Por exemplo, considere um repositório virtual com as seguintes definições de prioridade para repositórios upstream:

  • main-repo: prioridade definida como 100
  • secondary-repo1: prioridade definida como 80.
  • secondary-repo2: prioridade definida como 80.
  • test-repo: prioridade definida como 20.

main-repo tem o valor de prioridade mais elevado, pelo que o repositório virtual é sempre pesquisado primeiro.

Ambos os elementos secondary-repo1 e secondary-repo2 têm a prioridade definida como 80. Se um pacote pedido não estiver disponível em main-repo, o Artifact Registry pesquisa estes repositórios em seguida. Uma vez que ambos têm o mesmo valor de prioridade, o Artifact Registry pode optar por publicar um pacote de qualquer um dos repositórios se a versão estiver disponível em ambos.

test-repo tem o valor de prioridade mais baixo e vai publicar um artefacto armazenado se nenhum dos outros repositórios a montante o tiver.

Eliminar pacotes

Modos de repositório: padrão, remoto

Pode eliminar um pacote e todas as respetivas versões ou eliminar uma versão específica.

  • Depois de eliminar um pacote, não pode anular a ação.
  • Para repositórios remotos, apenas a cópia em cache do pacote é eliminada. A fonte a montante não é afetada. Se eliminar um pacote em cache, o Artifact Registry transfere-o e coloca-o novamente em cache da próxima vez que o repositório receber um pedido para a mesma versão do pacote.

Depois de publicar uma versão do pacote, não pode republicar um pacote com a mesma combinação de nome e versão, mesmo depois de eliminar a versão. Esta é uma restrição do npm para garantir que o conteúdo de uma versão do pacote publicada é sempre o mesmo.

Se quiser incentivar os utilizadores a instalarem uma versão atualizada de um pacote, use o comando npm deprecate para marcar a versão antiga do pacote como descontinuada. Quando um utilizador tenta instalar o pacote descontinuado, o Artifact Registry devolve um aviso de descontinuação.

Antes de eliminar um pacote ou uma versão do pacote, verifique se comunicou ou resolveu quaisquer dependências importantes do mesmo.

Para eliminar um pacote:

Consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

  2. Na lista de repositórios, clique no repositório adequado.

    A página Pacotes apresenta os pacotes no repositório.

  3. Selecione o pacote que quer eliminar.

  4. Clique em ELIMINAR.

  5. Clique em ELIMINAR na caixa de diálogo de confirmação.

gcloud

Execute o seguinte comando:

gcloud artifacts packages delete PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] [--async]

Substitua o seguinte:

  • PACKAGE é o nome do pacote no repositório.
  • REPOSITORY é o nome do repositório. Se configurou um repositório predefinido, pode omitir esta flag para usar o predefinido.
  • LOCATION é a localização regional ou multirregional do repositório. Use esta flag para ver repositórios numa localização específica. Se tiver configurado uma localização predefinida, pode omitir esta flag para usar a predefinição.

A flag --async faz com que o comando seja devolvido imediatamente, sem aguardar a conclusão da operação em curso.

Para eliminar versões de um pacote:

Consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

  2. Na lista de repositórios, clique no repositório adequado.

    A página Pacotes apresenta os pacotes no repositório.

  3. Clique num pacote para ver as versões desse pacote.

  4. Selecione as versões que quer eliminar.

  5. Clique em ELIMINAR.

  6. Clique em ELIMINAR na caixa de diálogo de confirmação.

gcloud

Execute o seguinte comando:

gcloud artifacts versions delete VERSION \
    --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] \
    [--async]

Substitua o seguinte:

  • VERSION é o nome da versão a eliminar.
  • PACKAGE é o nome do pacote no repositório.
  • REPOSITORY é o nome do repositório. Se configurou um repositório predefinido, pode omitir esta flag para usar o predefinido.
  • LOCATION é a localização regional ou multirregional do repositório. Use esta flag para ver repositórios numa localização específica. Se tiver configurado uma localização predefinida, pode omitir esta flag para usar a predefinição.

A flag --async faz com que o comando seja devolvido imediatamente, sem aguardar a conclusão da operação em curso.

O que se segue?