Здравствуйте, есть бекенд на nestjs, фронтенд на vue, в обоих случаях все на typescript, хотелось бы, переиспользовать типы и на фронтенде и бекенде, то есть какой то локальный пакет types. Гуглив на эту тему, нашел решение в виде npm workspaces. Но как, например, быть в ситуации когда локальный пакет types обновился, разом обновлять версию в фронтенд и бекенд? Или может, я не туда смотрю?
Вообще, АПИшные типы не то чтобы часто менялись, поэтому можно их тупо копипастить, но может есть какое-то ультимативное решение, которое годится не только для фронт тс + бек тс, но и для фронт тс + бек жава, к примеру.
Да, есть workspaces у npm и yarn. npm workspaces работают с 15 версии ноды, но сейчас стабильной версии ноды считается 14 версия. То есть формально тащить npm 7 в прод пока не самое надёжное решение. Ярн в этом случае будет стабильнее.
Когда пакет обновился — да, разом обновлять и бекенд, и фронтенд.
Альтернативный подход: можно в отдельной репе разрабатывать бекенд, в отдельной фронтенд. Типы публиковать как пакет зависимостей и устанавливать в фронтенд репу.
С другой стороны, любые изменения в бекенд не должны ломать обратную совместимость. Иначе выкатываешь релиз бека с необновленным фронтом — приложение перестаёт работать. А если изменения в бэкенд обратносовместимые, то от изменения типов не придётся сразу адаптировать фронтенд-код, даже если всё живёт в одном репозитории и управляется через workspaces.
lavezzi1, если весь код лежит в одно репоззитории, то никакие пакеты собирать и публиковать не нужно. Вот мой простенький проект на ноде с использованием воркспейсов: https://github.com/mbelsky/hltv-featured Можете скачать, поставить зависимости, добавить функциональность в одном пакете и посмотреть как с ними начать работать в соседнем.