Как заставить Yarn переустановить пакет?

У моего проекта есть зависимость, которую я иногда получаю от сервера пакетов, а иногда от локальной копии, которая есть на моем компьютере. В результате мне часто нужно иметь переключатель Yarn, где он ищет зависимость. Более того, я часто меняю локальную копию зависимости, и мне нужно, чтобы это изменение отражалось в моем основном проекте. В результате мне нужен способ сообщить Yarn продолжить поиск в том же месте для зависимости, но переустановить зависимость, пропуская кеш и захватывая его непосредственно из текущего источника, даже если номер версии не изменился. (Иногда я хочу попробовать небольшие изменения в зависимости, и каждый раз обновление номера версии быстро меня раздражает.)

Как мне это сделать?

Я пробовал следующее, но ни одно из них не работает:

yarn remove dependency
yarn add file:/dependency

Продолжает использовать предыдущую версию зависимости.

yarn remove dependency
yarn cache clear
yarn add file:/dependency
yarn install --force

Также продолжает использовать предыдущую версию зависимости.

yarn remove dependency
rm -rf node_modules/
yarn cache clear
yarn add file:/dependency
yarn install --force

По-прежнему продолжает использовать предыдущую версию зависимости.

Как я могу убедиться, что Yarn использует последнюю версию моей зависимости?


person Kevin    schedule 26.01.2017    source источник
comment
У меня в чате был разговор по этому вопросу: chat.stackoverflow.com/rooms/ 17 / беседа / Совет, который я получил в этом чате, иногда срабатывает, но мне трудно постоянно обновлять локальную зависимость.   -  person Kevin    schedule 26.01.2017
comment
Удалите каталог node_modules, обновите package.json до нужной версии и переустановите все. Пряжа быстрая; это займет у вас всего несколько секунд.   -  person Ezra Chang    schedule 26.01.2017
comment
@EzraChang Как я уже говорил в своем вопросе, я пробовал это, и это не сработало.   -  person Kevin    schedule 26.01.2017


Ответы (8)


Переустановка пакета после простого удаления модуля узла работает с:

yarn install --check-files

person Karl Adler    schedule 05.10.2017
comment
Это не так, когда источником является репозиторий git - person Jaime Agudo; 11.05.2018
comment
Я не уверен, что вы имеете в виду ... обычно источник - это репозиторий git, и он работает. - person Karl Adler; 14.05.2018
comment
@abimelex Я думаю, что Хайме имеет в виду ссылку в package.json вот так: "dependencies" : { "project" : "user/project#branch-name" }. - person Christiaan Westerbeek; 05.06.2018
comment
Как раз то, что мне было нужно сейчас! Спасибо :] - person Thomas Junk; 07.09.2018
comment
Это устранило мою ошибку: не могу найти модуль '../lib/completion' и аналогичные проблемы, вызванные мегасинхронизацией! Спасибо! - person Neoraptor; 24.05.2019

Вы можете использовать yarn link команду. Это настроит вашу локальную зависимость, так что всякий раз, когда вы вносите изменения в зависимость, она немедленно отображается в вашем основном проекте, и вам не нужно делать что-либо еще для ее обновления.

Если ваш основной проект находится в ~/programming/main, а ваша зависимость находится в ~/programming/dependency и называется MyLocalDependency, вам нужно:

1) Запустите yarn link (без дополнительных флагов) из вашей зависимости:

cd ~/programming/dependency
yarn link

2) Запустите yarn link <name of dependency package> из основного проекта:

cd ~/programming/main
yarn link MyLocalDependency

И вы сделали!

Если вы хотите переключиться с локальной копии зависимости на другую, размещенную в другом месте, вы можете использовать _9 _ .

cd ~/programming/main
yarn unlink MyLocalDependency
cd ~/programming/dependency
yarn unlink

Если вы используете NPM вместо Yarn, npm link и npm link <dependency> работают одинаково. Чтобы разорвать связь с зависимостью, запустите npm rm --global <dependency>. (Это потому, что npm link работает, создавая simlink в глобальном наборе пакетов NPM, поэтому удаление связанной зависимости из глобальных пакетов также разрывает ссылку.)

См. npm link документацию и Как удалить пакет, установленный с помощью ссылки npm?

person Kevin    schedule 26.01.2017

Есть еще один способ. Просто используйте yarn upgrade package-name

См. Руководство: https://yarnpkg.com/lang/en/docs/cli/upgrade/

person Sergey Okatov    schedule 02.03.2019

Как Кевин ответил самому себе, yarn link - хороший вариант.
Но это может вызвать некоторые проблемы, если пакет, который вы связывание имеет одноранговые зависимости.

То, что сказал Карл Адлер, также можно сделать:

yarn --check-files

Но это переустановит (yarn без подкоманды то же самое, что и yarn install) каждый пакет, который был изменен.

Итак, если вы действительно хотите просто переустановить один пакет:

yarn add package-name --force
person seelts    schedule 04.06.2019

Помимо этих ответов, у меня проблема с переключением ветвей git и yarn. У меня есть ветка для обновления node_modules пакетов и еще одна для исправления ошибок моего проекта. когда я проверяю исправление ошибки и возвращаюсь к обновленной ветке, yarn install или yarn возвращает:

success Already up-to-date.
✨  Done in 0.79s.

Но все новые пакеты не устанавливаются. поэтому с помощью приведенной ниже команды я заставил yarn установить все пакеты:

yarn --check-files

А теперь возвращается:

????  Building fresh packages...
✨  Done in 79.91s.
person AmerllicA    schedule 01.03.2020

Хотя это не ответ Yarn (кажется, он отлично работает с yarn, без package.lock или с чем-то еще), это то, что я в конечном итоге сделал для кипариса (кипарис помещает файлы туда, где имхо, этого не должно быть, и если вы 're caching node_modules в CI ... Оставляю этот ответ на случай, если у кого-то еще есть похожая проблема со мной, и он найдет этот пост.

npm rebuild cypress
person xenoterracide    schedule 19.04.2020

В случае, если вы были похожи на меня и устанавливали один из ваших личных пакетов (ни у кого не было доступа), который вы переустановили, а затем принудительно отправили в git и получили сообщение об ошибке:

$ yarn add https://github.com/username/my-rebased-package.git
error Command failed.
Exit code: 128
Command: git
Arguments: pull
Directory: /Users/eric/Library/Caches/Yarn/v6/.tmp/8ebab1a3de712aa3968f3de5d312545b
Output:
error: Pulling is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

Вы можете решить эту проблему, просто удалив кешированную папку:

$rm -rf /Users/eric/Library/Caches/Yarn/v6/.tmp/8ebab1a3de712aa3968f3de5d312545b

После этого вы можете без проблем установить.

person Eric Wiener    schedule 02.05.2020

Пытаться:

  1. очистка кеша пряжи [‹имя_модуля ...›]

  2. пряжа добавить [‹имя_модуля ...›]

person Junior Tour    schedule 21.06.2021