O fio não pode encontrar o registro privado do Github npm

8

Eu me inscrevi no registro privado do npm beta do Github e segui as instruções: https://github.com/features/package-registry

Funciona muito bem com npm, mas eu prefiro usar fios. E embora o npm não tenha problemas para encontrar o pacote registrado, o fio não consegue encontrá-lo.

yarn add @omniphx/adminite-adminite-ui-components saídas:

yarn add v1.19.0
info No lockfile found.
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/4] 🔍  Resolving packages...
error Couldn't find package "@omniphx/adminite-ui-components" on the "npm" registry.
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

Depois de ler em repositórios privados com fios, pensei que o truque se devia a fios com um formato rc ligeiramente diferente. Infelizmente, isso também não funcionou e o fio ainda não conseguiu encontrar o registro privado.

.npmrc

registry=https://registry.npmjs.org
@omniphx:registry=https://npm.pkg.github.com/omniphx

.yarnrc

registry "https://registry.npmjs.org"
"@omniphx:registry" "https://npm.pkg.github.com/omniphx"

Também confirmou que meu token do github também está definido com yarn config list:

yarn config v1.19.0
info yarn config
{
  'version-tag-prefix': 'v',
  'version-git-tag': true,
  'version-commit-hooks': true,
  'version-git-sign': false,
  'version-git-message': 'v%s',
  'init-version': '1.0.0',
  'init-license': 'MIT',
  'save-prefix': '^',
  'bin-links': true,
  'ignore-scripts': false,
  'ignore-optional': false,
  registry: 'https://registry.npmjs.org',
  'strict-ssl': true,
  'user-agent': 'yarn/1.19.0 npm/? node/v12.11.1 darwin x64',
  email: '[email protected]',
  lastUpdateCheck: 1570679687836,
  username: 'omniphx',
  '@omniphx:registry': 'https://npm.pkg.github.com/omniphx'
}
info npm config
{
  '//npm.pkg.github.com/:_authToken': 'fake12345',
  registry: 'https://registry.npmjs.org',
  '@omniphx:registry': 'https://npm.pkg.github.com/omniphx',
  python: '/usr/bin/python'
}

Qualquer ideia?


Resolvido

Changed "@myorg:registry" "https://npm.pkg.github.com/myorg"
To      "@myorg:registry" "https://npm.pkg.github.com"
Matthew Mitchener
fonte
Essa correção ajuda no seu caso? stackoverflow.com/questions/58430182/…
peterevans

Respostas:

9

Acabei de encontrar uma situação semelhante. Parecia que yarnestava procurando apenas no registro principal do pacote Yarn o pacote privado da minha organização. Copiei os exemplos da documentação de Pacotes do GitHub para construir seu .npmrcarquivo diretamente no .yarnrcarquivo no projeto que consumirá o aplicativo, sem saber que os formatos eram diferentes (nunca tive que lidar com .yarnrcarquivos antes).

No entanto, após atualizar o .yarnrcarquivo com o formato correto que você mencionou acima (que eu também encontrei no Google), localizei com yarnêxito o pacote privado e o instalei corretamente.

Como aviso , minha yarnversão: 1.17.3

Passos que tomei

  1. Iniciar nova sessão de terminal
  2. cd para o projeto
  3. nvm use (se você tiver uma versão de nó específica para usar)
  4. Adicione o .yarnrcarquivo formatado corretamente ao projeto. Veja abaixo como ele se parece.
  5. Adicione manualmente o pacote e o intervalo de versões ao package.jsonpacote privado
  6. Corre npm login --registry=https://npm.pkg.github.com --scope=@MyOrg
    • Veja a nota abaixo no escopo / organização
  7. Corre yarn

Isso funcionou para mim.

.yarnrc

"@myorg:registry" "https://npm.pkg.github.com"

Nota : Veja abaixo uma observação sobre o nome da organização / escopo,

Outras notas

Eu sei que parece que você não tem problemas com isso, dado o nome de usuário / escopo do GH acima, mas para qualquer pessoa que venha aqui, a documentação do GH é um pouco esparsa no que diz respeito ao mapeamento do nome de usuário / organização para um escopo no nome do pacote. Basta lembrar que estas pequenas pegadinhas estão aqui:

  • O nome do seu pacote deve sempre estar no escopo da sua organização (ou nome de usuário)
    • Por exemplo, name: @johndturn/my-package
  • Se sua organização possui letras maiúsculas MyOrg, basta substituí-las no nome do pacote em seu package.json e seu .yarnrcpor minúsculas
    • Por exemplo, name: @myorg/my-package
    • Nota : Ao me autenticar npm login, ainda mantive as letras maiúsculas no --scope=argumento.
  • O nome do seu pacote não precisa ser o mesmo nome do repositório.
    • Por exemplo, para um repo chamado MyOrg/random-prefix.js-lib, você pode ter name: @myorg/js-libem seu package.jsonarquivo o próprio projeto. Em seguida, instalá-lo em outros projetos será algo parecido @myorg/js-lib: 1.0.0.
John T
fonte
Trabalhou para mim também, obrigado. Agora, descubro como defini-lo no meu IC, que não é executado nas Ações do Github, mas nos jenkins.
Dhwaneet Bhatt
@DhwaneetBhatt é uma ótima pergunta, e deve ser bastante direta, com algumas suposições. Se você estiver executando o Jenkins com Pipelines e a Jenkinsfile, suponho que você pode simplesmente adicionar os comandos acima (como npm login ...) ao seu Jenkinsfile, em uma etapa de pré-construção. Isso também pressupõe que você tenha Jenkins autenticado com algum tipo de usuário em sua organização do GitHub que tenha os privilégios corretos para obter pacotes da sua organização. Dito isto, ainda não o implementei para nossas caixas Jenkins, mas informarei quando o fizer (se variar do que mencionei).
John T
2
Obrigado pela resposta! Parece que o meu problema era que eu tinha em "@myorg:registry" "https://npm.pkg.github.com/myorg"vez de "@myorg:registry" "https://npm.pkg.github.com". Estranho que esse mesmo URL funcionou bem no meu.npmrc
Matthew Mitchener 04/02
O @MatthewMitchener parece que você encontrou a resposta mais simples: deixe o /myorgfinal da sua conta .npmrce o GitHub Package Registry funcionará com fio ou npm. (Sem necessidade de separar .yarnrc.)
medmunds
2

Como não sou especialista em npm / yarn, talvez esteja entendendo mal o que está acontecendo aqui, mas acho que o proxy de pacote do registro npm ainda não funciona com o yarn. Isso poderia estar relacionado? Quando o proxy do pacote foi lançado para o npm, lembro-me de ler comentários no Twitter de pessoas que tentaram com fios e não funcionaram.

Encontre o tópico do Twitter aqui: https://twitter.com/github/status/1171832034580451328

Não funciona com fios. Assim que eu mudo o URL do registro -> Não foi possível encontrar o pacote.

peterevans
fonte
1

O problema que tive é um pouco diferente.

Depois de tentar o que John sugeriu, ainda não consigo adicionar pacotes de registro privados yarn(mas perfeitamente bem npm)

Então eu percebo duas coisas:

Para pacotes do GitHub, tudo npmbem com

registry=https://npm.pkg.github.com/my-org

ou

@my-org:registry=https://npm.pkg.github.com

mas yarnpermita apenas a última sintaxe.

Os documentos do site Github mostram apenas a primeira sintaxe que pode causar problemas para os usuários do yarn.

Outra coisa é que, se você npm loginacessar o registro privado, mas usar um .yarnrcarquivo em seu projeto, o fio não poderá realmente misturar suas npmcredenciais. Embora pareça se comportar de maneira diferente em ambientes diferentes.

Mas parece ser uma prática recomendada manter yarn login+ .yarnrcou npm login+ .npmrc(você ainda pode usar o yarn para gerenciar seus pacotes nos dois casos)

Xinan
fonte