Как удалить пакет из магазина pnpm или принудительно повторно загрузить его? - PullRequest
0 голосов
/ 01 октября 2018

Я использую pnpm для управления проектом npm, и случайно изменил содержимое установленного пакета, скажем, очистил содержимое node_modules/jquery/dist/jquery.js.

Проблема не в том, как я переустановил jquery (pnpm install jquery), содержимое этого файла всегда пусто.Я даже пытался удалить jquery из магазина pnpm ~/.pnpm-store/, но это не работает (возможно, я удалил неправильный пакет)

Наконец, мне нужно удалить все файлы в ~/.pnpm-store, чтобы загрузитьвсе, это решает мою проблему, но я хочу знать, есть ли более простой способ сделать это.

1 Ответ

0 голосов
/ 01 октября 2018

{Мой ответ будет охватывать pnpm v2.16.2}

Краткий ответ: запустить pnpm install --force.(pnpm update может также работать)

Длинный ответ.Когда вы просто запускаете pnpm install, pnpm сравнивает нужный файл термоусадочной пленки (project/shrinkwrap.yaml) с текущим (project/node_modules/.shrinkwrap.yaml).В вашем случае они равны, поэтому node_modules не трогается.

Когда используется --force, пакеты проверяются и повторно связываются с хранилищем.Повторная проверка означает, что ее целостность проверена.Вы удалили файл из jquery, поэтому проверка не удастся, и пакет будет повторно распакован в хранилище и повторно привязан к node_modules.

В качестве альтернативы, вы можете удалить node_modules вашего проекта и запустить pnpm install,Это также проверило бы целостность jquery перед тем, как связать его с магазином.


При этом, я думаю, pnpm install jquery также, вероятно, должен проверять целостность jquery.Мы создадим для этого проблему в репозитории pnpm.

И, возможно, мы можем добавить некоторые дополнительные команды для проверки каждого пакета в node_modules и повторной распаковки всех измененных зависимостей.

Aв настоящее время доступна связанная команда pnpm store status , которая печатает список измененных пакетов

...