Доброй ночи. Столкнулся с такой проблемой. Есть проект и есть своя либа. Оба юзают react, react-router,react-router-dom. И вот в либе, в проекте отдельно все ок. Но когда компонент из либы, который использует например useNavigate из react-router-dom бьет ошибку "Error: useNavigate() may be used only in the context of a component."
Полагаю что он импортит из своих модулей а не из проекта, из-за чего теряется контекст. Как правильн опроинсталить чтобы завелось? Такая же проблема с useFormContext из react-hook-form и других
Вам нужно исключить зависимость от роутера в вашей либе. Делается это разными способами в зависимости от сборщика. Какой сборщик у вас? Если vite, то в его конфиге нужно правильно настроить параметры build.rollupOptions.external.
По хорошему сам реакт тоже нужно исключить из сборки либы.
PeerDependencies это несколько иное. Этот параметр говорит, что чтобы ваша либо могла быть установлена в другом проекте, в этом проекте должны быть установлены зависимости, перечисленные в peerDeps. И все. Этот параметр никак не влияет на сборку либы.