Comment installer le package avec le chemin local par Yarn? Il n'a pas pu trouver de colis

99

Dans mon, package.jsonje pointe le paquet local my-custom-i18npar son chemin relatif:

package.json

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

npm installinstalle correctement les packages, mais yarna un problème avec celui-ci et ne peut tout simplement pas trouver ce package:

sortie de fil

$ 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.

Je vois qu'il le regarde sur le npmregistre, là où ce paquet ne vit pas.

Question

Y a-t-il un changement pour utiliser du fil avec des emballages locaux? Par packages locaux, j'entends les packages pointés par un chemin relatif comme my-custom-i18n.

michalczukm
la source

Réponses:

195

Yarn nécessite un préfixe file:pour les packages locaux.

Pour le chemin relatif:

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

Pour un chemin absolu

yarn add file:/dev/your-project

Pour votre exemple, la dépendance dans package.jsonserait déclarée comme suit:

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

Cela fonctionne aussi bien pour Yarn que pour NPM.

C'est une incompatibilité avec le client NPM, l'équipe Yarn est consciente et déclarée prendre en charge ce comportement - référence sur le problème GitHub .

Mettre à jour:

Depuis la version v0.21.0 , le file:préfixe n'est pas nécessaire. Voir pull-request avec correctif et changelog .

Piotr Lewandowski
la source
1
merci, fonctionne comme un charme. Mais si ce n'est pas compatible avec le client npm pour le moment - je vais laisser npmtel quel :) PS mon idée était de n'utiliser yarnque localement sans convertir toute l'équipe et le projet. Alors ... je vais devoir attendre le support pour ça :)
michalczukm
3
assurez-vous de vider votre cache. comme fil, essayez toujours la version en cache en premier
Bo Chen
5
+1 pour la mise à jour! La suppression du file:préfixe a résolu un problème que nous avions où yarn installsur Windows ajouterait un ./préfixe aux chemins de fichiers relatifs, mais yarn installsur macOS le supprimait.
Magne
Le chemin absolu n'a pas fonctionné pour moi. Cela fonctionnerait pour l'installation, mais ensuite le transpiling échouerait parce que d'une manière ou d'une autre, il cherchait un chemin relatif mais le yarn.lock avait le chemin absolu.
pixelearth
1
Il semble qu'avec yarn, 1.17.3le file:préfixe soit toujours nécessaire dans la situation suivante: Disons que vous avez un package barqui a une dépendance locale ./dependencies/xyz. Si un autre package fooutilise package bar, il essaiera de résoudre par ./dependencies/xyzrapport au foorépertoire plutôt que par rapport au barrépertoire. Après avoir changé la dépendance au file:./dependencies/xyzproblème a été résolu.
David Callanan le