Me inscribí en la versión beta del registro privado npm de Github y seguí sus instrucciones: https://github.com/features/package-registry
Funciona muy bien con npm pero prefiero usar hilo. Y aunque npm no tiene problemas para encontrar el paquete registrado, yarn no puede encontrarlo en absoluto.
yarn add @omniphx/adminite-adminite-ui-components
salidas:
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.
Después de leer en repositorios privados con hilo, pensé que el truco se debía a que el hilo tenía un formato rc ligeramente diferente. Desafortunadamente, eso tampoco funcionó y Yarn todavía no puede encontrar el 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"
También confirmó que mi token github también está configurado con 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'
}
¿Alguna idea?
Resuelto
Changed "@myorg:registry" "https://npm.pkg.github.com/myorg"
To "@myorg:registry" "https://npm.pkg.github.com"
Respuestas:
Me acabo de encontrar con una situación similar. Parecía que
yarn
solo estaba buscando en el registro principal de paquetes de Yarn el paquete privado de mi organización. Copié los ejemplos de la documentación de paquetes de GitHub para construir su.npmrc
archivo directamente en el.yarnrc
archivo del proyecto que consumirá la aplicación, sin saber que los formatos eran diferentes (nunca antes había tenido que lidiar con.yarnrc
archivos).Sin embargo, después de actualizar el
.yarnrc
archivo con el formato correcto que mencionó anteriormente (que también encontré buscando en Google),yarn
encontré con éxito el paquete privado y lo instalé correctamente.Como aviso , mi
yarn
versión: 1.17.3Pasos que tomé
cd
al proyectonvm use
(si tiene una versión de nodo específica para usar).yarnrc
archivo con el formato correcto al proyecto. Vea a continuación cómo se ve.package.json
para mi paquete privadonpm login --registry=https://npm.pkg.github.com --scope=@MyOrg
yarn
Eso funcionó para mí.
.yarnrc
Nota : Vea a continuación una nota sobre el nombre de la organización / alcance gotcha's
Otras notas
Sé que parece que no tiene ningún problema con esto, dado su nombre de usuario / alcance de GH anterior, pero para cualquier otra persona que venga aquí, la documentación sobre GH es un poco escasa con respecto a la asignación de su nombre de usuario / nombre de organización a un alcance en el nombre del paquete. Solo recuerda estos pequeños trucos aquí:
name: @johndturn/my-package
MyOrg
, simplemente reemplácelas en el nombre del paquete en supackage.json
y su.yarnrc
con minúsculasname: @myorg/my-package
npm login
, todavía he mantenido las letras mayúsculas en el--scope=
argumento.MyOrg/random-prefix.js-lib
, puede tenername: @myorg/js-lib
en supackage.json
archivo el proyecto en sí. Luego, instalarlo en otros proyectos se verá algo así@myorg/js-lib: 1.0.0
.fuente
Jenkinsfile
, supongo que simplemente puede agregar los comandos anteriores (comonpm login ...
) en suJenkinsfile
, en un paso previo a la compilación. Esto también supone que tiene a Jenkins autenticado con algún tipo de usuario en su organización de GitHub que tiene los privilegios correctos para extraer paquetes de su organización. Dicho esto, todavía no lo he implementado para nuestros cuadros de Jenkins, pero le avisaré cuando lo haga (si varía de lo que he mencionado)."@myorg:registry" "https://npm.pkg.github.com/myorg"
lugar de"@myorg:registry" "https://npm.pkg.github.com"
. Extraño que esa misma url funcionó bien en mi.npmrc
/myorg
final en su.npmrc
, y luego el Registro de paquetes GitHub funciona con hilo o npm. (Sin necesidad de un separado.yarnrc
.)No soy un experto en npm / yarn, por lo que podría estar malinterpretando lo que está sucediendo aquí, pero todavía no creo que el proxy del paquete del registro npm funcione con yarn. ¿Podría estar relacionado? Cuando se lanzó el paquete proxy para npm, recuerdo haber leído comentarios en Twitter de personas que lo probaron con hilo y no funcionó.
Encontré el hilo de Twitter aquí: https://twitter.com/github/status/1171832034580451328
fuente
El problema que tuve es ligeramente diferente.
Después de probar lo que John sugirió, todavía no puedo agregar paquetes de registro privado con
yarn
(pero perfectamente bien connpm
)Entonces me doy cuenta de dos cosas:
Para los paquetes de GitHub,
npm
está bien con cualquieraregistry=https://npm.pkg.github.com/my-org
o
@my-org:registry=https://npm.pkg.github.com
pero
yarn
solo permite la última sintaxis.Los documentos del sitio web de Github solo muestran la primera sintaxis que podría causar problemas a los usuarios de hilo.
Otra cosa es que si va
npm login
al registro privado pero usa un.yarnrc
archivo en su proyecto, yarn realmente no puede mezclar susnpm
credenciales con él. Aunque parece comportarse de manera diferente en un entorno diferente.Pero parece ser una buena práctica seguir con
yarn login
+.yarnrc
onpm login
+.npmrc
(aún puede usar hilo para administrar sus paquetes en ambos casos)fuente