Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Serviços Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
Os escopos do npm ajudam a categorizar pacotes relacionados em grupos. Eles permitem que você crie pacotes com os mesmos nomes que os pacotes criados por outros usuários sem conflitos. Usando escopos, você pode separar pacotes públicos e privados adicionando o prefixo de escopo @scopeName e configurando o .npmrc arquivo para usar um feed com esse escopo.
O Azure Artifacts oferece suporte à publicação e ao download de pacotes com escopo e sem escopo em feeds ou registros públicos. Os escopos do npm são especialmente úteis quando você está trabalhando com servidores locais auto-hospedados que não têm acesso à Internet, porque a configuração de fontes upstream nesses cenários não é viável. Em resumo, quando você usa escopos:
- Você não precisa se preocupar com conflitos de nomes.
- Você não precisa alterar o registro npm para instalar ou publicar pacotes.
- Cada organização ou usuário npm tem seu próprio escopo e somente os membros do proprietário ou do escopo podem publicar pacotes nesse escopo.
Prerequisites
| Produto | Requirements |
|---|---|
| Azure DevOps | - Uma Azure DevOps organização. - Um projeto do Azure DevOps . - Um feed do Azure Artifacts. – Baixar e instalar Node.js e npm. |
Conectar-se ao seu feed
Antes de configurar escopos npm, conecte seu projeto ao feed de Azure Artifacts. Certifique-se de concluir os pré-requisitos e criar um feed e, em seguida, siga estas etapas.
Azure Artifacts recomenda usar dois arquivos .npmrc separados. Mantenha um arquivo no diretório do usuário para armazenar suas credenciais e mantenha o segundo arquivo no mesmo diretório que o arquivopackage.json para armazenar a configuração específica do feed.
Entre no Azure DevOps e vá para o projeto.
Selecione Artefatos e, em seguida, selecione o feed no menu suspenso.
Selecione Conectar ao feed e selecione npm no painel de navegação esquerdo.
Se esta for a primeira vez que você usa Azure Artifacts com o npm, selecione Obter as ferramentas e siga as instruções para instalar os pré-requisitos do sistema operacional. Primeiro, você deve instalar Node.js e npm. Em seguida, dependendo do sistema operacional, instale vsts-npm-auth para Windows ou configure credenciais para ambientes não Windows. Para orientações para sistemas que não sejam Windows, consulte Conectar-se a um feed - Outros.
Crie um arquivo .npmrc no mesmo diretório que o arquivo package.json e cole o snippet da seção de configuração Project nesse arquivo.
No Windows, execute o comando a seguir para adicionar um token do Azure Artifacts ao arquivo .npmrc no nível do usuário. Você não precisa executar esse comando todas as vezes. Quando o token expira, o npm retorna um erro 401 Não autorizado para indicar que é hora de atualizá-lo.
vsts-npm-auth -config .npmrc
Note
vsts-npm-authnão há suporte no Azure DevOps Server. Para obter orientações para sistemas que não sejam Windows, consulte Conectar-se a um feed – Outras plataformas.
Configuração de escopo
Para usar escopos com o Azure Artifacts, atualize o arquivo .npmrc do projeto para que os pacotes com escopo que você publica ou instala sejam resolvidos pelo feed. Substitua registry=<YOUR_SOURCE_URL> por @ScopeName:registry=<YOUR_SOURCE_URL>.
Atualize também o arquivo package.json para incluir o nome do escopo e o nome do pacote, por exemplo: { "name": "@ScopeName/PackageName" }. Os exemplos a seguir mostram como configurar feeds no escopo da organização e no escopo do projeto.
Feed da organização com escopo:
@ScopeName:registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/ always-auth=true{ "name": "@ScopeName/PackageName" }Feed do projeto com escopo:
@ScopeName:registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/ always-auth=true{ "name": "@ScopeName/PackageName" }
Example
O arquivo .npmrc :
@local:registry=https://pkgs.dev.azure.com/FabrikamOrg/NpmDemo/_packaging/FabrikamFeed/npm/registry/ always-auth=trueO arquivo package.json :
{ "name": "@demo/js-e2e-express-server", "version": "2.0.0", "description": "JavaScript server written with Express.js", "main": "index.js", "directories": { "doc": "docs", "test": "test" } }
Publicar pacotes com escopo
Depois de configurar o escopo e atualizar os arquivos do projeto, abra uma janela do prompt de comando, navegue até o diretório do projeto e execute o comando a seguir para publicar o pacote com escopo. No exemplo anterior, o pacote é publicado sob o escopo @local.
npm publish
Fontes upstream versus escopos
As fontes upstream fornecem a maior flexibilidade. Ao usar fontes upstream, você pode consumir pacotes com escopo e sem escopo do feed do Azure Artifacts e também usar pacotes de registros públicos, como o npmjs.com. Essa abordagem funciona bem quando você deseja que um único feed atue como a fonte principal para pacotes internos e dependências externas aprovadas.
Os escopos são mais restritivos, mas ainda podem ser uma opção prática no cenário certo. Quando você usa escopos, cada nome de pacote deve começar com @<scope>, o que significa que você precisa adotar e manter essa convenção de nomenclatura em seus pacotes. Por exemplo, se você publicar um pacote como @local/my-package, deverá continuar a usar esse nome com escopo em qualquer lugar em que o pacote seja referenciado.
Esse requisito pode adicionar sobrecarga, especialmente se você planeja publicar os mesmos pacotes em um registro público mais tarde. Se você remover escopos ao implantar seus pacotes, também deverá atualizar as referências correspondentes em seus arquivos package.json e quaisquer projetos dependentes.
Mesmo com essas limitações, os escopos podem servir como uma alternativa viável quando as fontes upstream não são práticas. Isso é especialmente verdadeiro em ambientes isolados ou auto-hospedados em que o acesso a registros públicos não está disponível e você deseja evitar colisões de nome de pacote enquanto mantém os pacotes organizados no feed.