Wie installiere ich ein Paket mit einem lokalen Pfad von Yarn? Es konnte kein Paket finden

95

In meinem package.jsonverweise ich auf ein lokales Paket my-custom-i18nanhand seines relativen Pfads:

package.json

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

npm installInstalliert Pakete korrekt, hat aber yarnein Problem damit und kann dieses Paket einfach nicht finden:

Garnausgabe

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

Ich sehe, dass es in der npmRegistrierung aussieht , wo dieses Paket nicht lebt.

Frage

Gibt es Änderungen bei der Verwendung von Garn mit lokalen Paketen? Mit lokalen Paketen meine ich Pakete, auf die durch den relativen Pfad als verwiesen wird my-custom-i18n.

michalczukm
quelle

Antworten:

188

file:Für lokale Pakete benötigt das Garn ein Präfix .

Für den relativen Pfad:

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

Für den absoluten Weg

yarn add file:/dev/your-project

In Ihrem Beispiel package.jsonwürde die Abhängigkeit in wie folgt deklariert:

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

Dies funktioniert sowohl für Garn als auch für NPM.

Es ist eine Inkompatibilität mit dem NPM-Client. Das Yarn-Team ist sich dessen bewusst und erklärt, dieses Verhalten zu unterstützen - Referenz zum GitHub-Problem .

Aktualisieren:

Seit der Version v0.21.0file: wird kein Präfix mehr benötigt. Siehe Pull-Request mit Fix und Changelog .

Piotr Lewandowski
quelle
1
Danke, funktioniert wie ein Zauber. Aber wenn es npmvorerst nicht mit dem npm-Client kompatibel ist - ich lasse es einfach so wie es ist :) PS Meine Idee war, es yarnnur lokal zu verwenden, ohne das gesamte Team und Projekt zu konvertieren. Also .. ich muss bis zur Unterstützung warten :)
michalczukm
3
Stellen Sie sicher, dass Sie Ihren Cache leeren. Als Garn versuchen Sie immer zuerst die zwischengespeicherte Version
Bo Chen
5
+1 für das Update! Das Entfernen des file:Präfixes löste ein Problem, bei dem yarn installunter Windows ./relative Dateipfade mit Präfixen versehen wurden, yarn installunter MacOS jedoch.
Magne
Der absolute Weg hat bei mir nicht funktioniert. Es würde für die Installation funktionieren, aber dann würde das Transpilieren fehlschlagen, weil irgendwie nach einem relativen Pfad gesucht wurde, aber das Garn.lock den absoluten Pfad hatte.
Pixelearth
1
Bei Garn scheint 1.17.3das file:Präfix in der folgenden Situation immer noch erforderlich zu sein: Angenommen, Sie haben ein Paket barmit einer lokalen Abhängigkeit ./dependencies/xyz. Wenn ein anderes Paket ein Paket fooverwendet bar, wird versucht, es ./dependencies/xyzrelativ zum fooVerzeichnis anstatt relativ zum barVerzeichnis aufzulösen . Nach dem Ändern der Abhängigkeit wurde file:./dependencies/xyzdas Problem behoben.
David Callanan