Як встановити пакет з локальним шляхом шляхом Yarn? Не вдалося знайти пакет


99

У своєму package.jsonя вказую локальний пакет my-custom-i18nза його відносним шляхом:

package.json

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

npm installвстановлює пакунки правильно, але yarnмає проблеми з цим і просто не може знайти цей пакет:

вихід пряжі

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

Я бачу, що це виглядає в npmреєстрі, де цей пакет не живе.

Питання

Чи є якісь зміни щодо використання пряжі з місцевими пакетами? Під локальними пакетами я маю на увазі пакети, вказані відносним шляхом як my-custom-i18n.

Відповіді:


195

Пряжа вимагає префікс file:для локальних пакетів.

Для відносного шляху:

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

Для абсолютного шляху

yarn add file:/dev/your-project

Для вашого прикладу залежність в package.jsonбуде оголошена наступним чином:

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

Це працює як для пряжі, так і для NPM.

Це несумісність із клієнтом NPM, команда Yarn знає і заявляє, що підтримує цю поведінку - посилання на проблему GitHub .

Оновлення:

З версії v0.21.0file: префікс не потрібен. Див. Pull-request із виправленнями та журналом змін .


1
спасибі, працює як шарм. Але якщо це наразі не сумісно з клієнтом npm - я просто залишу npmяк є :) PS Моя ідея полягала в тому, щоб використовувати yarnлише локально, не перетворюючи всю команду та проект. Отож .. Мені доведеться почекати, поки підтримка цього буде :)
michalczukm

3
обов’язково очистіть кеш. як пряжа завжди спробуйте спочатку кешовану версію
Бо Чень

5
+1 за оновлення! Видалення file:префіксу вирішило проблему, коли yarn installу нас Windows додавав ./префікс до відносних шляхів до файлів, а yarn installна macOS видаляв його.
Magne

Абсолютний шлях для мене не спрацював. Це спрацювало б для встановлення, але тоді транпіляція зазнала б невдачі, оскільки якось він шукав відносний шлях, але yarn.lock мав абсолютний шлях.
pixelearth

1
Здається , з пряжею Приставка по - , як і раніше необхідно в такій ситуації: Припустимо , у вас є пакет , який має локальну залежність . Якщо інший пакет використовує пакет , він спробує вирішити відносно каталогу, а не відносно каталогу. Після зміни залежності проблема була вирішена. 1.17.3file:bar./dependencies/xyzfoobar./dependencies/xyzfoobarfile:./dependencies/xyz
Девід Калланан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.