Как заставить 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 использует последнюю версию моей зависимости?

2 ответов


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

yarn install --check-files


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

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

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

cd ~/programming/dependency
yarn link

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

cd ~/programming/main
yarn link MyLocalDependency

и ты молодец!

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

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

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

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