Jak zainstalować pakiet ze ścieżką lokalną firmy Yarn? Nie mógł znaleźć pakietu

105

W moim package.jsonwskazuję pakiet lokalny my-custom-i18nwedług jego ścieżki względnej:

package.json

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

npm installinstaluje pakiety poprawnie, ale yarnma z tym problem i po prostu nie może znaleźć tego pakietu:

produkcja przędzy

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

Widzę, że wygląda to w npmrejestrze, gdzie ten pakiet nie istnieje .

Pytanie

Czy jest jakaś zmiana w używaniu przędzy z lokalnymi paczkami? Przez pakiety lokalne mam na myśli pakiety wskazane przez ścieżkę względną jako my-custom-i18n.

michalczukm
źródło

Odpowiedzi:

201

Przędza wymaga prefiksu file:dla lokalnych pakietów.

Dla ścieżki względnej:

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

Dla ścieżki absolutnej

yarn add file:/dev/your-project

Na przykład zależność w package.jsonzostanie zadeklarowana w następujący sposób:

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

Działa to również w przypadku Yarn i NPM.

Jest to niezgodność z klientem NPM, zespół Yarn jest tego świadomy i zadeklarowany, że obsługuje to zachowanie - odniesienie do problemu GitHub .

Aktualizacja:

Od wersji v0.21.0file: prefiks nie jest potrzebny. Zobacz żądanie ściągnięcia z poprawką i dziennikiem zmian .

Piotr Lewandowski
źródło
1
dzięki, działa jak urok. Ale jeśli na razie nie jest kompatybilny z klientem npm - zostawię npmtaki jaki jest :) PS moim pomysłem było użycie yarntylko lokalnie bez konwertowania całego zespołu i projektu. Więc… będę musiał poczekać na wsparcie dla tego :)
michalczukm
3
upewnij się, że wyczyściłeś pamięć podręczną. jako przędza zawsze najpierw wypróbuj wersję z pamięci podręcznej
Bo Chen
5
+1 za aktualizację! Usunięcie file:prefiksu rozwiązało problem, który mieliśmy , gdy w systemie yarn installWindows dodawał ./prefiks do względnych ścieżek plików, ale yarn installw systemie macOS usuwał go.
Magne
Absolutna ścieżka nie zadziałała dla mnie. Będzie działać w przypadku instalacji, ale transpiling nie powiedzie się, ponieważ w jakiś sposób szukał ścieżki względnej, ale plik yarn.lock miał ścieżkę bezwzględną.
pixelearth
1
Wydaje przędzą prefiks jest nadal konieczne w następującej sytuacji: Powiedzmy, że masz pakiet , który ma lokalny zależność . Jeśli inny pakiet używa pakietu , spróbuje rozwiązać względny katalog zamiast względnego katalogu. Po zmianie zależności problem został rozwiązany. 1.17.3file:bar./dependencies/xyzfoobar./dependencies/xyzfoobarfile:./dependencies/xyz
David Callanan