¿Cómo instalar el paquete con la ruta local por Yarn? No pudo encontrar el paquete

99

En mi package.jsonestoy apuntando el paquete local my-custom-i18npor su ruta relativa:

package.json

"dependencies": {
 "core-js": "^2.4.1",
 "my-custom-i18n": "./../MyProject.Shared/myproject-i18n",
 "rxjs": "5.0.0-beta.12",
 ...
}

npm installinstala los paquetes correctamente, pero yarntiene problemas y simplemente no puede encontrar este paquete:

salida de hilo

$ yarn
yarn install v0.15.1
info No lockfile found.
[1/4] Resolving packages...
error Couldn't find package "myproject-i18n" on the "npm" registry.
info Visit http://yarnpkg.com/en/docs/cli/install for documentation about this command.

Veo que lo busca en el npmregistro, donde este paquete no se encuentra.

Pregunta

¿Hay algún cambio para usar hilo con paquetes locales? Por paquetes locales me refiero a paquetes apuntados por una ruta relativa como my-custom-i18n.

michalczukm
fuente

Respuestas:

195

Yarn requiere prefijo file:para paquetes locales.

Para ruta relativa:

yarn add file:./../your-project

Por camino absoluto

yarn add file:/dev/your-project

Para su ejemplo, la dependencia en package.jsonse declararía de la siguiente manera:

 "my-custom-i18n": "file:./../MyProject.Shared/myproject-i18n",

Esto también funciona tanto para Yarn como para NPM.

Es incompatible con el cliente NPM, el equipo de Yarn está al tanto y declaró que admite este comportamiento: referencia sobre el problema de GitHub .

Actualizar:

Desde la versión v0.21.0 , el file:prefijo no es necesario. Ver solicitud de extracción con arreglo y registro de cambios .

Piotr Lewandowski
fuente
1
gracias, funciona de maravilla. Pero si no es compatible con el cliente npm por ahora, lo dejaré npmcomo está :) PD: mi idea era usar yarnsolo localmente sin convertir todo el equipo y el proyecto. Entonces ... tendré que esperar hasta recibir soporte para esto :)
michalczukm
3
asegúrese de borrar su caché. como hilo siempre pruebe la versión en caché primero
Bo Chen
5
+1 para la actualización! Eliminar el file:prefijo resolvió un problema que teníamos en el que yarn installen Windows agregaría ./prefijo a las rutas de archivo relativas, pero yarn installen macOS lo eliminaría.
Magne
El camino absoluto no funcionó para mí. Funcionaría para la instalación, pero luego la transpilación fallaría porque de alguna manera estaba buscando una ruta relativa, pero yarn.lock tenía la ruta absoluta.
pixelearth
1
Parece que con yarn 1.17.3el file:prefijo sigue siendo necesario en la siguiente situación: Digamos barque tiene un paquete que tiene una dependencia local ./dependencies/xyz. Si otro paquete fooestá usando package bar, intentará resolverlo ./dependencies/xyzrelativo al foodirectorio en lugar de relativo al bardirectorio. Después de cambiar la dependencia al file:./dependencies/xyzproblema se resolvió.
David Callanan